Vim-Leitertaste für mehrstufiges Kopieren und Einfügen

436
Josh

Wenn ich große Codeblöcke von einer Webseite kopieren und einfügen muss, muss ich die folgenden Schritte einzeln ausführen:

  1. : einfügen einfügen
  2. Rufen Sie den Vim-Einfügemodus auf
  3. Zwischenablage einfügen
  4. nopaste einstellen
  5. in den normalen Modus wechseln

Ich hoffe, das alles auf einmal mit einer Lead-Key-Mapping für P. zu tun.

Danke für die Hilfe!

0
Ein paar Fragen: Haben Sie versucht, ein Makro mit 'q' zu erstellen? Müssen Sie sich zum Einfügen im Einfügemodus befinden? Können Sie ein einfaches Beispiel geben? Shadoath vor 6 Jahren 0
Um ehrlich zu sein, habe ich noch nie ein Makro verwendet. Derzeit muss ich zum Einfügen im Einfügemodus sein. Grundsätzlich ist jedes Mal, wenn ich von einer Webseite einfügen (wie Stack Overflow), ein totales Durcheinander - daher suche ich nach einer Möglichkeit, "normales" Kopieren und Einfügen außerhalb von VIM zu emulieren. Vielleicht gehe ich den falschen Weg. Josh vor 6 Jahren 0

1 Antwort auf die Frage

0
Ingo Karkat

Wenn Ihr Vim Zugriff auf die X-Auswahl / System-Zwischenablage hat, können Sie einfach über <C-r>*/ <C-r>+im Einfügemodus oder direkt im Normalmodus über "*p/ einfügen "+p.

Nur wenn das nicht funktioniert, müssen Sie dies tun :set paste, da Vim ansonsten nicht feststellen kann, ob Sie dies (sehr schnell) eingegeben oder eingefügt haben. Da jede Tastaturaktion von der Eingabe ausgehen könnte, ist es schwierig, dies zu automatisieren, aber Vim bietet zum Glück die 'pastetoggle'Möglichkeit, das Umschalten zu beschleunigen:

'pastetoggle' 'pt' string (default "") global  When non-empty, specifies the key sequence that toggles the 'paste' option. This is like specifying a mapping: :map :set invpaste<CR> Where is the value of 'pastetoggle'. The difference is that it will work even when 'paste' is set. 'pastetoggle' works in Insert mode and Normal mode, but not in Command-line mode. 

Zum Beispiel müssen :set pastetoggle=<F11>Sie nur mit i<F11> (paste) <F11><Esc>.