Ist es möglich, im Einfügemodus in Vim einzufügen?
385
Im Einfügemodus drücken CTRL-R {register}
Beispiele:
CTRL-R *
wird in den Inhalt der Zwischenablage eingefügt CTRL-R "
(das unbenannte Register) fügt das letzte Löschen oder Ziehen ein. Um dies in der Hilfe von vim zu finden, geben Sie ein :h i_ctrl-r
CTRL-R *
Funktioniert nur in GVIM oder in Versionen, die für die Interaktion mit x kompiliert wurden. Tippevim --version
und suche+xterm_clipboard
. Wenn Sie das nicht haben, benötigen Sie eine andere Version von vim. ( vim.wikia.com/wiki/Accessing_the_system_clipboard )+clipboard
, aber wenn Sie haben+xterm_clipboard
, sollten Sie das trotzdem haben. Auf einigen Betriebssystemenxterm_clipboard
ist nicht anwendbar.*
Register mit einem mittleren Mausklick eingefügt werden, während+
das herkömmliche Kopieren / Einfügen erfolgt. standards.freedesktop.org/clipboards-spec/clipboards-latest.txtWenn Sie nicht möchten, dass Vim die Formatierung in eingehendem eingefügtem Text beeinträchtigt, sollten Sie auch Folgendes in Betracht ziehen :
:set paste
. Dadurch wird verhindert, dass Vim Ihren Code erneut abruft. Wenn Sie mit dem Einfügen fertig sind,:set nopaste
kehren Sie zum normalen Verhalten zurück.Es ist auch möglich, den Modus mit einer einzigen Taste
set pastetoggle=<F2>
umzuschalten , indem Sie etwas zu Ihrer .vimrc hinzufügen. Weitere Details zum Umschalten des automatischen Einrückens finden Sie hier .quelle
:set nopaste
wird den Einfügemodus deaktivieren:set paste!
wahrscheinlich, dass das Einfügen in Ihrem Befehlsverlauf sehr eng ist. Sie können also einfach ':' drücken, dann mit dem Pfeil nach oben und ein '!' Hinzufügen.:set paste!
Danke :)!
am Ende des Befehls invim
schaltet den Befehl ein und aus. Auf diese Weise müssen Sie nicht eingeben,:set nopaste
sondern können durch Ihren Verlauf scrollen und denselben Befehl (:set paste!
) erneut ausführen .Nein, nicht direkt.Was Sie jedoch tun können, ist, den Einfügemodus für einen einzelnen Normalmodus schnell zu verlassen Ctrl-Ound von dort aus einzufügen, wodurch Sie wieder in den Einfügemodus versetzt werden.Tastenkombination: Ctrl-O p
EDIT: Interessant. Es scheint, dass es einen Weg gibt, den mehrere andere Personen aufgelistet haben.
quelle
esc + p
?esc + p + i
und definitiv einfacher zu tippen alsCTRL-R + "
CTRL-R "
. Obwohl die vimrc-Einstellungen dies ändern können, wird beim Einfügen einer neuen Zeile mitCTRL-O p
die Einrückung nicht mehr angezeigt .Im Einfügemodus können Sie Folgendes verwenden
Ctrl-R {register}
: Register kann sein:+
für die Zwischenablage,*
für die X-Zwischenablage (zuletzt ausgewählter Text in X)"
für das unbenannte Register (letztes Löschen oder Ziehen in Vim),:h registers
).Ctrl-R {register}
fügt den Text so ein, als wäre er eingegeben worden.Ctrl-R Ctrl-O {register}
fügt den Text mit dem ursprünglichen Einzug ein.Ctrl-R Ctrl-P {register}
Fügt den Text ein und rückt ihn automatisch ein.Ctrl-O
kann verwendet werden, um einen beliebigen normalen Modusbefehl auszuführen, bevor zum Einfügemodus zurückgekehrt wird,Ctrl-O "+p
kann also beispielsweise auch verwendet werden.Weitere Informationen finden Sie in der Dokumentation mit
:h i_ctrl-r
quelle
Sie können dies verwenden, um aus der Zwischenablage einzufügen mit Ctrlv:
Und dies, um die visuelle Auswahl in die Zwischenablage zu ziehen Ctrlc:
Wenn Sie im normalen Modus standardmäßig auch die Zwischenablage für das klassische Vim-Ziehen / Einfügen ( y/ p) verwenden möchten , finden Sie hier eine Konfigurationsoption, die dies ausführt :
Mit diesen Konfigurationen können Sie zB zuerst im normalen Modus ziehen und dann mit einfügen Ctrlv im Einfügemodus einfügen. Sie können auch Text aus verschiedenen vim-Instanzen und verschiedenen Anwendungen einfügen.
Eine weitere Option ist:
Dann können Sie einfach etwas auswählen, indem Sie mit der Maus in Ihre X-Umgebung ziehen und es anschließend in vim einfügen. Aber (aus irgendeinem Grund) werden Sie yin Vim und nicht in der Lage sein, etwas ( ) zu ziehenshiftinsert danach irgendwo anders zu ziehen, was wahrscheinlich ziemlich einschränkend ist.
Vim-Dokumente dazu: http://vim.wikia.com/wiki/Accessing_the_system_clipboard
Zum Einfügen aus benutzerdefinierten Registern können Sie den anderen Antworten folgen :). Bei dieser Antwort geht es hauptsächlich um die Integration von Vim in die Zwischenablage Ihres Systems.
Beachten Sie, dass Sie für
set clipboard=unnamedplus
undset clipboard=unnamed
zum Arbeiten gvim oder vimx (vim-X11
) verwenden müssen: Diese werden mit kompiliert+xterm_clipboard
. Sie können dies optional in Ihren.bashrc
Alias einfügenvim
mitvimx
:Sie können herausfinden, ob Ihr vim die
+xterm_clipboard
in den von bereitgestellten Informationen hat oder nichtvim --version
.quelle
:set paste
und das Byzantinische<leader><leader> * y
auch nur aus der Ferne wünschenswert ist? Um nicht zu engagiert zu klingen, bin ich wirklich neugierig, welche Vim-Philosophie dies widerspiegelt oder ob es nur ein historisches Unglück ist.inoremap <S-Insert> <F12><C-r>+<F12>
(ich benutze F12 als Pastetoggle). Vielen Dank.Wenn Sie Vim so einstellen, dass es die Systemzwischenablage (
:set clipboard=unnamed
) verwendet, kann jeder Text, den Sie in Vim kopieren, mit eingefügt werdenShift +Insert . Shift+ Insertist einfach eine betriebssystemweite Einfügetastenkombination ( Ctrl+ Insertist die entsprechende 'Kopie').quelle
p
der Text in die Zwischenablage eingefügt?Shift + Insert
wir den Text einfügen können, müssen wir uns im Einfügemodus befinden.Sie können auch die mittlere Maustaste verwenden, um im Einfügemodus einzufügen (nur Linux).
quelle
Sie können den
-- INSERT (past) --
Modus aufrufen über:oder
:set paste
und Aufrufen des Einfügemodus (:set nopaste
zum Deaktivieren)-- INSERT (past) --
Verwenden Sie im Modus einfach die Einfügefunktion Ihres Systems (z. B. CtrlShiftvunter Linux,Cmdv Mac OS).Diese Strategie ist sehr nützlich, wenn Sie vim über ssh verwenden.
quelle
Ja. In Windows Ctrl+V und Linux werden beide Maustasten fast gleichzeitig gedrückt.
Unter Windows denke ich, dass diese Zeile in meinem _vimrc es wahrscheinlich tut:
Unter Linux kann ich mich nicht erinnern, wie ich es gemacht habe. Es sieht so aus, als hätte ich wahrscheinlich eine Zeile aus der Standard-VIMRC-Datei gelöscht.
quelle
Einfügen im Einfügemodus
In diesem Fall erscheint eine benutzerdefinierte Karte angemessen. Dies ist, was ich verwende, um zerrissene Elemente im Einfügemodus einzufügen:
Mein
Leader
Schlüssel hier ist\
; Dies bedeutet, dass\p
beim Einfügen im Einfügemodus die zuvor gezogenen Elemente / Zeilen eingefügt werden.quelle
Fügen Sie einfach eine Karte hinzu:
Starten Sie vim neu und wenn Sie
Crtl+p
im Einfügemodus drücken , wird kopierter Text eingefügtquelle