http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
Schaltet die automatische Einrückung für das Einfügen von Code ein
Hintergrund
Wenn Sie zum Einfügen von Text Vim-Befehle verwenden, geschieht nichts Unerwartetes. Das Problem tritt nur beim Einfügen aus einer anderen Anwendung auf und nur, wenn Sie keine GUI-Version von Vim verwenden. In einer Konsolen- oder Terminalversion von Vim gibt es kein Standardverfahren zum Einfügen von Text aus einer anderen Anwendung. Stattdessen kann das Terminal das Einfügen durch Einfügen von Text in den Tastaturpuffer emulieren, sodass Vim denkt, dass der Text vom Benutzer eingegeben wurde. Nach jedem Zeilenende kann Vim den Cursor bewegen, sodass die nächste Zeile mit demselben Einzug beginnt wie die letzte. Dies ändert jedoch den Einzug, der sich bereits im eingefügten Text befindet.
Einfügen umschalten
Fügen Sie Folgendes in Ihr vimrc ein (ändern Sie den gewünschten Schlüssel):
set pastetoggle=<F2>
So fügen Sie aus einer anderen Anwendung ein:
- Starten Sie den Einfügemodus.
- Drücken Sie F2 (schaltet die Einfügeoption ein).
- Verwenden Sie Ihr Terminal, um Text aus der Zwischenablage einzufügen.
- Drücken Sie F2 (schaltet die Einfügeoption aus).
Der vorhandene Einzug des eingefügten Textes bleibt dann erhalten.
Sie müssen den Einfügemodus nicht zuerst starten. Wenn Sie sich jedoch im normalen Modus befinden und ein Mapping für F2 haben, wird dieses Mapping angewendet und die Funktion 'pastetoggle' wird nicht ausgeführt.
Einige Leute mögen das visuelle Feedback, das in der Statuszeile von der folgenden Alternative für Ihr vimrc angezeigt wird:
nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode
In der ersten Zeile wird eine Zuordnung festgelegt, sodass durch Drücken von F2 im normalen Modus die Option "Einfügen" invertiert und anschließend der Wert dieser Option angezeigt wird. In der zweiten Zeile können Sie im Einfügemodus F2 drücken, um das Einfügen ein- und auszuschalten. In der dritten Zeile wird angezeigt, ob im Einfügemodus "Einfügen" aktiviert ist.