vim
Text einfügen
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
.