Ist es möglich, im Einfügemodus in Vim einzufügen?
Antworten
Zu viele Anzeigen?Wenn Sie nicht wollen, dass Vim die Formatierung des eingehenden eingefügten Textes verfälscht, sollten Sie auch die Verwendung von :set paste
. Dies wird verhindern, dass Vim Ihren Code neu einfügt. Wenn Sie mit dem Einfügen fertig sind, :set nopaste
kehrt zum normalen Verhalten zurück.
Es ist auch möglich, den Modus mit einer einzigen Taste umzuschalten, indem man etwas wie set pastetoggle=<F2>
zu Ihrer .vimrc hinzufügen. Weitere Details zum Umschalten der automatischen Einrückung sind aquí .
Nein, nicht direkt. Sie können jedoch den Einfügemodus für einen einzelnen Vorgang im Normalmodus schnell mit Ctrl-O und dann von dort aus einfügen, wodurch Sie wieder in den Einfügemodus gelangen.
Schlüsselkombination: Ctrl-O p
EDITAR: Interessant. Es scheint einen Weg zu geben, wie mehrere andere Personen aufgelistet haben.
Im Einfügemodus können Sie mit Ctrl-R {register}
donde registrieren sein kann:
+
für die Zwischenablage,*
für die X-Zwischenablage (zuletzt markierter Text in X),"
für das unbenannte Register (letztes Löschen oder Ziehen in Vim),- oder eine Reihe von anderen (siehe
:h registers
).
Ctrl-R {register}
fügt den Text ein, als ob er getippt wäre.
Ctrl-R Ctrl-O {register}
fügt den Text mit der ursprünglichen Einrückung 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 Befehl im normalen Modus auszuführen, bevor man in den Einfügemodus zurückkehrt, also
Ctrl-O "+p
kann zum Beispiel auch verwendet werden.
Weitere Informationen finden Sie in der Dokumentation unter :h i_ctrl-r
Sie können dies zum Einfügen aus der Zwischenablage verwenden mit Ctrlv :
set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>
Und dies, um eine visuelle Auswahl in die Zwischenablage zu verschieben mit Ctrlc :
vnoremap <C-c> "+y
Wenn Sie auch die Zwischenablage standardmäßig für klassisches Vim-Yanking/Einfügen verwenden wollen ( y / p ) im normalen Modus, hier ist eine Konfigurationsoption, die dies ermöglicht:
set clipboard=unnamedplus
Mit dieser Konfiguration können Sie z.B. zuerst im normalen Modus ranken und dann mit Ctrlv im Einfügemodus. Außerdem können Sie Text aus verschiedenen Vim-Instanzen und verschiedenen Anwendungen einfügen.
Eine andere Möglichkeit ist:
set clipboard=unnamed
Dann können Sie einfach etwas durch Ziehen mit der Maus in Ihrer X-Umgebung auswählen und es anschließend in vim einfügen. Aber (aus irgendeinem Grund) werden Sie nicht in der Lage sein, etwas herauszuziehen ( y ) in Vim und shiftinsert danach irgendwo anders, was wahrscheinlich ziemlich einschränkend ist.
Vim-Dokumente zu diesem Thema: http://vim.wikia.com/wiki/Accessing_the_system_clipboard
Für das Einfügen aus benutzerdefinierten Registern können Sie den anderen Antworten folgen :). In dieser Antwort geht es hauptsächlich um die Integration von Vim mit der Zwischenablage Ihres Systems.
Beachten Sie, dass für set clipboard=unnamedplus
y set clipboard=unnamed
zu arbeiten, müssen Sie gvim oder vimx verwenden ( vim-X11
): Diese werden kompiliert mit +xterm_clipboard
. Sie können dies optional in Ihre .bashrc
zum Alias vim
con 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_clipboard
in den Informationen, die von vim --version
.
- See previous answers
- Weitere Antworten anzeigen