2009-06-12 7 views
25

Lorsque j'essaie de coller du code à partir du navigateur vers Emacs, le code est automatiquement mis en retrait. Existe-t-il un moyen d'empêcher temporairement Emacs de mettre en retrait : set paste in vim?Toute commande Emacs comme mode collage dans vim?

+5

Est-ce que vous collez dans un terminal? Cela ne devrait pas se produire si vous collez dans l'interface graphique Emacs qui obtient la pâte "directement"; Lorsque vous collez dans le terminal, c'est comme si vous tapiez tous ces caractères un à un. – ShreevatsaR

+1

Est-ce que cela arrive dans tous les modes/tampons? Ou juste un peu? Avez-vous essayé de coller dans Emacs lorsque vous démarrez emacs sans vos personnalisations (ala 'emacs -q')? –

+0

Ne savait pas à propos de «coller»-merci! – andrewdotn

Répondre

23

La meilleure façon avec emacs24 est:

M-x electric-indent-mode RET 

qui désactive l'indentation automatique.

Collez votre truc.

renable

M-x electric-indent-mode RET 

Ou tout simplement M-x UP-Arrow ;-)

+0

J'aimerais ajouter un crochet pour que, lorsque je le colmate, il soit automatiquement désactivé puis réactivé. Quelqu'un a des idées? – ohruunuruus

+0

Je pense que vous pourriez en ayant votre propre liaison de clé surchargeant Cc et en appelant une fonction qui fait cela, appelle le paste de CUA ou autre https://www.emacswiki.org/emacs/CuaMode – Maresh

-1

Vous pouvez essayer

c-toggle-syntactic-indentation 
+0

c-toggle-syNtactic-indentation – PanCrit

+0

Merci d'avoir attrapé la faute de frappe. Fixé. – mamboking

13

commutateur dans le tampon *scratch* (ou tout simplement pour une mémoire tampon inexistante, il sera en mode fondamental, qui ne devrait pas faire une indentation automatique, sauf si vous avez configuré en quelque sorte à le faire), tapez C-SPC pour commencer la région, collez votre texte, tapez C-w pour le couper dans Emacs, revenez à votre tampon d'origine, tapez C-y pour coller.

+0

Ceci est une bonne solution de contournement, mais pas * tout à fait * la même chose. Par exemple, je note que cela donne encore un avertissement pour les parenthèses incompatibles, lorsque vous collez du texte (dans une instance d'Emacs basée sur un terminal) qui a un smiley. (':)') Ce serait bien d'avoir une sorte de "mode" (en utilisant ce terme de façon très lâche) qui éteint toutes ces choses (parce qu'elles peuvent rendre le collage long, si c'est un gros morceau de texte). Pourtant, cela contourne certains aspects, au moins - et résout clairement le principal problème du demandeur original. – lindes

+0

Cela ne fonctionne pas pour beaucoup d'entrées. La raison étant que lorsque vous collez du texte codé sous windows/dos, le \ r \ n force l'apparence d'un onglet. Basculer le fichier sur Windows pour terminer une ligne unix si vous le pouvez, et il s'arrête – easytiger

+0

Coller dans le tampon de travail supprime toute indentation pour moi. Je voudrais préserver l'indentation qui était à l'origine dans le texte copié. La solution qui désactive le mode indent électrique fonctionne. – ishmael

3

Une solution rapide pour Python est de coller dans un bloc """ ... """.

2

préfixée commande de copie C-uC-y serait sans tirer sur indentation. Fonctionne avec Emacs 25.

+0

@Bae heureux mon commentaire aidé, donc J'ai fait une réponse à partir de cela. – 4e6