Suche…


Verlassen des Einfügemodus

Befehl Beschreibung
<Esc> Verlässt den Einfügemodus, löst automatische Befehle und Abkürzungen aus
<C-[> Genau auch von <Esc>
<Cc> Verlässt den Einfügemodus, löst keine automatischen Befehle aus

Einige Leute verwenden gerne ein relativ ungewöhnliches Zeichenpaar wie jk als Abkürzung für <Esc> oder <C-[> , die auf manchen Tastaturen nur schwer zu erreichen sind:

inoremap jk <Esc>l

Verschiedene Möglichkeiten, um in den Einfügemodus zu gelangen

Befehl Beschreibung
a Text an die aktuelle Cursorposition anhängen
A Text am Ende der aktuellen Zeile anhängen
i Fügen Sie Text vor der aktuellen Cursorposition ein
I Fügen Sie Text vor dem ersten nicht leeren Zeichen der aktuellen Zeile ein
gI Fügen Sie Text in die erste Spalte der Cursorzeile ein
gi Fügen Sie den Text an der Stelle ein, an der er zuletzt im Einfügemodus verlassen wurde
O Eröffne eine neue Zeile über der aktuellen Zeile und füge dort Text hinzu (CAPITAL O )
o Öffne eine neue Zeile unterhalb der aktuellen Zeile und füge dort Text hinzu (Kleinbuchstabe o )
s oder cl Zeichen unter dem Cursor löschen und in den Einfügemodus wechseln
S oder cc Löschen Sie die gesamte Zeile und wechseln Sie in den Einfügemodus
C Löschen Sie von der Cursorposition bis zum Ende der Zeile und starten Sie den Einfügemodus
c{motion} {motion} löschen und Einfügemodus starten (siehe Basic Motion )

Einfügemodus-Verknüpfungen

Befehl Beschreibung
<Cw> Wort vor dem Cursor löschen
<Ct> Aktuelle Zeile mit einer shiftwidth
<Cd> Entrollte aktuelle Zeile um eine shiftwidth
<Cf> Linie neu einblenden (Cursor auf Position für automatischen Einzug bewegen)
<Ca> Fügen Sie zuvor eingefügten Text ein
<Ce> Geben Sie das Zeichen unten ein
<Ch> Ein Zeichen rückwärts löschen
<Cy> Fügen Sie das Zeichen oben ein
<Cr>{register} Füge den Inhalt von {register}
<Co>{normal mode command} Führen Sie {normal mode command} ohne den Einfügemodus zu verlassen
<Cn> Nächste Autovervollständigungsoption für das aktuelle Wort
<Cp> Vorherige Autovervollständigungsoption für das aktuelle Wort
<Cv> Fügen Sie ein Zeichen mit seinem ASCII-Wert in Dezimalzahl ein
<Cv>x Fügen Sie ein Zeichen mit dem ASCII-Wert in Hexadezimal ein
<Cv>u Fügen Sie ein Zeichen nach dem Unicode-Wert in Hexadezimal ein
<Ck> Geben Sie einen Digraphen ein

Ausführen normaler Befehle aus dem Einfügemodus

Drücken Sie im Einfügemodus <Co> , um den Einfügemodus vorübergehend zu verlassen und einen einmaligen normalen Befehl auszuführen.

Beispiel

<Co>2w springt zum zweiten Wort nach links und kehrt zum Einfügemodus zurück.

Hinweis: Wiederholen mit . werden nur die Aktionen vom Zurückkehren in den Einfügemodus wiederholen

Dies ermöglicht einige nützliche Mappings, z

inoremap <C-f> <Right>
inoremap <C-b> <Left>
inoremap <C-a> <C-o>^
inoremap <C-e> <C-o>$

Strg + a setzt jetzt den Cursor an den Anfang der Zeile und Strg + e - an das Ende der Zeile. Diese Zuordnungen werden standardmäßig in readline können daher für Personen hilfreich sein, die Konsistenz wünschen.

Fügen Sie den Text in mehreren Zeilen gleichzeitig ein

Drücken Sie Strg + v , um den visuellen Blockierungsmodus aufzurufen.

Verwenden Sie / / j / k , um mehrere Zeilen auszuwählen.

Drücken Sie die Umschalttaste + i und geben Sie ein, was Sie möchten.

Nachdem Sie die Esc-Taste gedrückt haben , wird der Text in alle ausgewählten Zeilen eingefügt.

Denken Sie daran, dass Ctrl + c nicht zu 100% mit Esc identisch ist und in dieser Situation nicht funktioniert!

Es gibt leichte Variationen von Shift + i , die Sie im visuellen Blockmodus drücken können:

Schlüssel Beschreibung
c oder s Löschen Sie den ausgewählten Block und wechseln Sie in den Einfügemodus
C Löschen Sie ausgewählte Zeilen (vom Cursor bis zum Ende) und wechseln Sie in den Einfügemodus
R Löschen Sie ausgewählte Zeilen und wechseln Sie in den Einfügemodus
EIN An ausgewählte Zeilen anhängen, wobei sich die Spalte am Ende der ersten Zeile befindet

Beachten Sie auch das Drücken von . Nach einem visuellen Blockiervorgang wird der Vorgang wiederholt, an dem sich der Cursor befindet!

Fügen Sie Text mit dem Befehl "Einfügen" des Terminals ein

Wenn Sie den Befehl Einfügen aus Ihrem Terminalemulatorprogramm verwenden, interpretiert Vim den Zeichenstrom so, als ob er eingegeben worden wäre. Dies führt zu allen möglichen unerwünschten Wirkungen, insbesondere zu ungünstigen Hinweisen.

Um dies zu beheben, im Befehlsmodus:

:set paste

Gehen Sie dann in den Einfügemodus, beispielsweise mit i . Beachten Sie, dass der Modus jetzt -- INSERT (paste) -- . Fügen Sie nun den Befehl mit dem Terminalemulator oder mit der Maus ein. Wenn Sie fertig sind, gehen Sie in den Befehlsmodus, mit Esc und führen Sie Folgendes aus:

:set nopaste

Es gibt einen einfacheren Weg, wenn Sie nur einmal einfügen möchten. Fügen Sie dies in Ihre .vimrc ein (oder verwenden Sie das Plugin unimpaired.vim ):

function! s:setup_paste() abort
  set paste
  augroup unimpaired_paste
    autocmd!
    autocmd InsertLeave *
      \ set nopaste |
      \ autocmd! unimpaired_paste
  augroup end
endfunction

nnoremap <silent> yo :call <SID>setup_paste()<CR>o
nnoremap <silent> yO :call <SID>setup_paste()<CR>O

Jetzt können Sie einfach yo drücken, um den Code unter dem Cursor einzufügen, und dann <Esc> , um zum normalen / nopaste-Modus zurückzukehren.

Einfügen aus einem Register im Einfügemodus

Im Einfügemodus können Sie mit <Cr> aus einem Register einfügen, das durch den nächsten Tastendruck festgelegt wird. <Cr>" zum Beispiel Pasten aus dem unbenannten ( " ) - Register.

Siehe :help registers .

Erweiterte Einfügebefehle und Verknüpfungen

Hier finden Sie eine Kurzanleitung für erweiterte Befehle zum Einfügen, Formatieren und Filtern.

Befehl / Verknüpfung Ergebnis
g +? + m Rot13-Kodierung bei Bewegung m durchführen
n + ctrl + a + n zur Nummer unter dem Cursor
n + Strg + x - n bis Nummer unter dem Cursor
g + q + m Bewegungslinien m auf feste Breite formatieren
: r ce w Mittellinien im Bereich r bis Breite w
: r le i Zeilen links im Bereich r mit Einzug ausrichten i
: r ri w Richten Sie die Zeilen im Bereich r an der Breite w aus
! mc Bewegungslinien m durch Befehl c filtern
n !! c N Zeilen durch Befehl c filtern
: r ! c Filterbereich r Zeilen durch Befehl c

Deaktivieren Sie den automatischen Einzug, um Code einzufügen

Wenn der Text über einen Terminal - Emulator einfügen, die auto-indent - Funktion kann die Vertiefung des eingefügten Text zerstören.

Zum Beispiel:

function () {
    echo 'foo'
    echo 'bar'
    echo 'baz'
}

wird eingefügt als:

function () {
    echo 'foo'
        echo 'bar'
            echo 'baz'
            }

Verwenden Sie in diesen Fällen die Option paste / nopaste , um die Funktion zum automatischen nopaste zu aktivieren / deaktivieren:

:set paste
:set nopaste

Hinzu kommt ein einfacherer Ansatz für das Problem: Fügen Sie die folgende Zeile in Ihre .vimrc ein:

set pastetoggle=<F3>

Und wenn Sie einfügen möchten, wie es ist, aus der Zwischenablage. Drücken Sie einfach F3 im insert und fügen Sie ein. F3 erneut F3 , um den paste .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow