Ist es möglich, im Einfügemodus in Vim einzufügen?
Ist es möglich, im Einfügemodus in Vim einzufügen?
Antworten:
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. Tippe vim --versionund 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 Betriebssystemen xterm_clipboardist 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.txt
Wenn 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 nopastekehren 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 .
:set nopastewird 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 in vimschaltet den Befehl ein und aus. Auf diese Weise müssen Sie nicht eingeben, :set nopastesondern 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.
esc + p?
esc + p + iund definitiv einfacher zu tippen alsCTRL-R + "
CTRL-R ". Obwohl die vimrc-Einstellungen dies ändern können, wird beim Einfügen einer neuen Zeile mit CTRL-O pdie 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-Okann verwendet werden, um einen beliebigen normalen Modusbefehl auszuführen, bevor zum Einfügemodus zurückgekehrt wird,
Ctrl-O "+pkann also beispielsweise auch verwendet werden.
Weitere Informationen finden Sie in der Dokumentation mit :h i_ctrl-r
Sie können dies verwenden, um aus der Zwischenablage einzufügen mit Ctrlv:
set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>
Und dies, um die visuelle Auswahl in die Zwischenablage zu ziehen Ctrlc:
vnoremap <C-c> "+y
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 :
set clipboard=unnamedplus
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:
set clipboard=unnamed
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=unnamedplusund set clipboard=unnamedzum Arbeiten gvim oder vimx ( vim-X11) verwenden müssen: Diese werden mit kompiliert +xterm_clipboard. Sie können dies optional in Ihren .bashrcAlias einfügen vimmit vimx:
if [ -e /usr/bin/vimx ]; then
alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard
fi
Sie können herausfinden, ob Ihr vim die +xterm_clipboardin den von bereitgestellten Informationen hat oder nicht vim --version.
:set pasteund das Byzantinische <leader><leader> * yauch 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').
pder Text in die Zwischenablage eingefügt?
Shift + Insertwir 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).
Sie können den -- INSERT (past) --Modus aufrufen über:
oder
:set pasteund Aufrufen des Einfügemodus ( :set nopastezum 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.
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:
source $VIMRUNTIME/mswin.vim
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.
In diesem Fall erscheint eine benutzerdefinierte Karte angemessen. Dies ist, was ich verwende, um zerrissene Elemente im Einfügemodus einzufügen:
inoremap <Leader>p <ESC>pa
Mein LeaderSchlüssel hier ist \; Dies bedeutet, dass \pbeim Einfügen im Einfügemodus die zuvor gezogenen Elemente / Zeilen eingefügt werden.
Fügen Sie einfach eine Karte hinzu:
" ~/.vimrc
inoremap <c-p> <c-r>*
Starten Sie vim neu und wenn Sie Crtl+pim Einfügemodus drücken , wird kopierter Text eingefügt