2016-04-14 3 views
0

Bitte beachten Sie, dies ist NICHT bezogen auf :paste/:nopaste und die Zwischenablage. Ich spreche über Kopieren und Einfügen vollständig innerhalb von Vim (d, y, p).Wie kann ich in vim einfügen/löschen und richtig eingerückt haben? (nicht reden über: Paste)

Es ist üblich, einen Codeblock von einem äußeren Block in einen inneren Block zu kopieren und einzufügen. Leider befindet sich der Einzug immer noch auf der Ebene des äußeren Blocks und ich muss ihn danach einrücken.

Was ich tun möchte, ist von gehen:

function foo() { 
} 
var bar; 
var bazz; 

zu

function foo() { 
    var bar; 
    var bazz; 
} 

In vim, was ich normalerweise tun ist:

1) gehen auf die Linie

2) in den visuellen Modus wechseln

3) markieren die Reihen

4) dd, um die Zeilen zu löschen

5) bewegen, um den Cursor nach oben

6) P einzufügen

7) Geben Sie visuellen Modus

8) Markieren Sie die Zeilen

9) >> zum Einrücken der Linien

Ich möchte es automatisch an der richtigen Stelle einrücken. Es wäre ein viel reibungsloserer Arbeitsablauf, wenn ich die Zeilen nicht erneut hervorheben und sie dann manuell einrücken müsste. Mit anderen Worten, eliminiere die Schritte 7-9.

Jeder weiß von einer Möglichkeit, dies zu tun?

Antwort

1

Sie können dies leicht zu einer Tastenbelegung machen, die beim Einfügen automatisch eingezogen wird.

Zum Beispiel

nnoremap gp p`[v`]= 

Aufteilung:

p to paste text 
`[v`] to selecte Pasted text 
= to autoindent selected text 
1

ich auf dieses Plugin kam.

https://github.com/sickill/vim-pasta

Sieht aus wie es das Gleiche wie ronakg tut oben mit einigen zusätzlichen Funktionen erwähnt.

+0

Es ist ein gutes Plugin. Ich benutze es auch. Aber es ist gut zu verstehen, wie das Zeug funktioniert. Prost. – ronakg

Verwandte Themen