2009-06-12 6 views
25

Wenn ich versuche, Code aus dem Browser in Emacs einzufügen, wird Code automatisch eingerückt, gibt es eine Möglichkeit, Emacs vorübergehend zu blockieren wie : Paste in Vim setzen?Beliebiger Emacs-Befehl wie der Einfügemodus in vim?

+5

Kleben Sie in ein Terminal? Dies sollte nicht passieren, wenn Sie in die GUI Emacs einfügen, die die Paste "direkt" erhält; Wenn Sie in das Terminal einfügen, ist es effektiv, als würden Sie alle diese Zeichen einzeln eingeben. – ShreevatsaR

+1

Passiert dies in allen Modi/Puffern? Oder nur ein paar? Haben Sie versucht, Emacs einzufügen, wenn Sie Emacs ohne Ihre Anpassungen starten (ala 'emacs -q')? –

+0

Ich wusste nichts von 'Paste'-Danke! – andrewdotn

Antwort

23

Der einfachste Weg, mit emacs24 ist:

M-x electric-indent-mode RET 

Das automatische Einzug deaktiviert.

Paste dein Ding.

renable

M-x electric-indent-mode RET 

Oder nur M-x UP-Arrow ;-)

+0

Ich würde gerne in der Lage sein, einen Haken hinzuzufügen, so dass beim Einfügen automatisch deaktiviert und dann wieder aktiviert wird. Hat jemand Ideen? – ohruunuruus

+0

Ich denke, Sie könnten, indem Sie Ihre eigenen Tastenbindung überschreiben Cc und ruft eine Funktion, die dies tut, ruft die Paste von CUA oder anderen https://www.emacswiki.org/emacs/CuaMode – Maresh

-1

Sie

c-toggle-syntactic-indentation 
+0

c-toggle-syNtactic-indentation – PanCrit

+0

Danke für den Tippfehler. Fest. – mamboking

13

Schalter in den *scratch* Puffer (oder nur bis zu einem gewissen nicht vorhandenen Puffer könnten versuchen, es in Fundamental-Modus sein wird, die keine autoindentation tun sollten, wenn Sie es irgendwie so konfiguriert haben, zu tun), geben Sie C-SPC ein, um die Region zu starten, fügen Sie Ihren Text ein, geben Sie C-w ein, um es in Emacs zu schneiden, wechseln Sie zurück zu Ihrem ursprünglichen Puffer, geben Sie C-y ein, um einzufügen.

+0

Dies ist eine nette Problemumgehung, wenn auch nicht ganz das Gleiche. Ich stelle beispielsweise fest, dass dies immer noch eine Warnung für nicht übereinstimmende Klammern gibt, wenn Sie Text in eine terminalbasierte Emacs-Instanz einfügen, der ein Smiley enthält. (':)') Es wäre schön, einen "Modus" zu haben (der diesen Begriff sehr locker verwendet), der all diese Dinge deaktiviert (weil sie das Einfügen sehr lange dauern können, wenn es ein großer Teil davon ist) Text). Immerhin geht das zumindest um einige Aspekte herum - und löst eindeutig das Hauptproblem des ursprünglichen Fragestellers. – lindes

+0

Dies funktioniert nicht für viele Eingaben.Der Grund ist, wenn Sie Windows/DOS-kodierten Text einfügen, zwingt die \ r \ n das Aussehen einer Registerkarte. Wenn möglich, schalte die Datei in Windows auf Unix-Zeilenendungen um, und es stoppt – easytiger

+0

Das Einfügen in den Scratch-Puffer entfernt alle Einrückungen für mich. Ich möchte den Einzug beibehalten, der ursprünglich im kopierten Text vorhanden war. Die Lösung, die den elektrischen Eindruckmodus deaktiviert, funktioniert. – ishmael

3

Eine schnelle Abhilfe für Python ist in einen """ ... """ Block einzufügen.

2

Vorangestellte yank Befehl C-UC-y wäre ohne Einbuchtung zerren. Funktioniert mit Emacs 25.

+0

@Bae froh, dass mein Kommentar geholfen, so Ich habe eine Antwort darauf gegeben. – 4e6