448 Stimmen

Einfügen im Einfügemodus?

Ist es möglich, im Einfügemodus in Vim einzufügen?

570voto

david Punkte 5679

Drücken Sie im Einfügemodus CTRL-R {register}

Beispiele:

  • CTRL-R * wird der Inhalt der Zwischenablage eingefügt
  • CTRL-R " (das unbenannte Register) fügt das letzte Löschen oder Zurückziehen ein.

Um dies in der Hilfe von vim zu finden, geben Sie ein :h i_ctrl-r

262voto

James Snyder Punkte 3902

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í .

143voto

JaredPar Punkte 699699

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.

55voto

Zaz Punkte 42583

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

30voto

clime Punkte 8267

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 .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X