Ich versuche, eine Einfügemoduszuordnung zum Einfügen aus der Systemzwischenablage zu schreiben. Ich habe das:
imap <c-p> <c-o>:set paste<cr><c-r><c-r>+<c-o>:set nopaste<cr>
(Beachten Sie, dass dies soll nach arbeiten diese )
Wenn Sie jedoch die Tastenzuordnung aufrufen, funktioniert sie nicht. Sie stoppt kurz am festgelegten Einfügeteil, sodass der Einfügemodus aktiviert ist.
Aber wenn ich all diese Tasten manuell mache, bekomme ich, was ich will ... Was ist also anders, wenn die Befehle unter einer Tastaturbelegung liegen? Was fehlt mir, um diese Arbeit zu machen?
Ich habe es auch versucht:
imap <c-p> <esc>"+gP
Dies führt zu einer Reihe von Fehlern, weil gP eine unbekannte Variable ist, aber das gleiche Mapping im normalen Modus funktioniert wie erwartet. Was ist also bei Mappings im Einfügemodus anders?
vim
ganzen Tag in einem Terminal, habe keine Probleme beim Einfügen und springe nicht durch all diese Reifen. Verwenden Sie zum Einfügen aus dem + -Register unter Beibehaltung der ursprünglichen Formatierung<C-R><C-O>+
. Sehen Sie:help i_CTRL-R_CTRL-O
für weitere Informationen hierzu. Ich weiß nicht, was mit Ihrem zweiten IMAP falsch ist - es funktioniert gut für mich.Antworten:
Das brauchen Sie nicht,
:set paste
wenn Sie den Inhalt der Zwischenablage mit einfügeni_CTRL-R
. Aufgrund des Befehls weiß Vim bereits, dass dies aus der Zwischenablage stammt.:set paste
ist für das Einfügen direkt aus dem Terminal (z. B. über die mittlere Maustaste); Dort kann Vim nicht zwischen eingegebenen oder eingefügten Zeichen unterscheiden und benötigt diesen Hinweis.Verwenden Sie, um das automatische Einrücken zu vermeiden
i_CTRL-R_CTRL-O
.quelle
<C-R><C-O>{register}
:-)Ich weiß immer noch nicht, was mit dem ersten Mapping, das ich ausprobiert habe, falsch ist, da ich glaube, dass es funktionieren sollte, aber ich habe in der VIM-Dokumentation (genauer gesagt: help i_CTRL-R) eine bessere Lösung gefunden:
Aus den Dokumenten:
quelle
Dieser zweite Befehl imap sollte gut funktionieren. Soweit ich weiß, sollte es den Einfügemodus verlassen, aus einer der System-Zwischenablagen (+) einfügen und den Cursor nach dem eingefügten Text verlassen.
Ich vermute, Sie führen entweder vi nicht vim aus oder Ihr vim befindet sich im kompatiblen Modus. In der Dokumentation für ["x] gP
(:help gP)
steht" not in vi ", sodass dies möglicherweise Ihr Problem istquelle