Gibt es eine Möglichkeit, ein einzelnes Zeichen einzufügen und dann den Einfügemodus zu verlassen?

10

Wenn ich durch Text gehe und zum Beispiel Backticks um bestimmte Wörter oder Anführungszeichen oder was auch immer hinzufüge, ist es irritierend, dass ich nach jeder Einfügung Esc oder Strg- [drücken muss. Die Einfügungen (und Anhänge) sind unterschiedlich, .helfen also nicht viel.

Gibt es etwas Ähnliches, rdas nach einem einzelnen Zeichen in den normalen Modus zurückkehrt - aber den Einfügemodus anstelle des Ersetzungsmodus verwendet?

Platzhalter
quelle
3
Sie sollten möglicherweise in Betracht ziehen, das vim-Surround- Plugin zu verwenden (oder zu erweitern) , um den Text aussagekräftiger zu bearbeiten .
VanLaser

Antworten:

11

Wenn dies nicht der Fall ist (ich habe nicht nachgesehen), können Sie diese Zuordnung in Ihrem .vimrc:

nnoremap <C-I> i <ESC>r

Es ifügt ein, platziert ein Leerzeichen, ESCAffen und startet einen einzelnen Buchstaben replace. Dies wird zugeordnet CtrlI.

Es ist ein Hack und hinterlässt einen Platz zum Aufhängen, wenn Sie die Escape-Taste drücken, bevor Sie einen Buchstaben eingeben - aber es ist besser als nichts!

Qix - MONICA WURDE FEHLERHAFT
quelle
1
Nicht schlecht ... Ich werde das wahrscheinlich nutzen, wenn sich niemand etwas Besseres einfallen lässt. :)
Wildcard
2
@Wildcard Ich habe nicht bemerkt, wie sehr ich tatsächlich auf diesen Anwendungsfall gestoßen bin, ohne es zu merken. Gute Frage :) Ich habe es auch zu meinem eigenen vimrc hinzugefügt.
Qix - MONICA wurde
2
Ich habe den größten Teil des Tages damit verbracht, ein paar Abschläge zu reparieren. Kursiv, Inline-Code, Einrückungen in Kopfzeilen, Hyperlinks ... alle mit einem Zeichen. :) Eigentlich ist deine Lösung perfekt; Ich werde es jetzt benutzen.
Wildcard
2
Nachteil: Es ist mit dem .Befehl nicht wiederholbar . :(
Wildcard
1
@Wildcard Leider gibt es nach einigen Recherchen keine Möglichkeit, einen manuellen Wiederholungszweig zu erstellen, es sei .denn, Sie verwenden repeat.vim.
Qix - MONICA wurde am
0

Verwenden Sie zum Einfügen eines Zeichens am Ende eines Wortes (anstelle der Cursorposition)

nnoremap <C-a> a <ESC>r

Diese Karten Ctrl + akönnen Sie natürlich auch allen anderen Karten zuordnen.

Ich habe die beiden in meinem, .vimrcnur damit ich nicht viel zu tun habe :)

" Insert char at cursor position
nnoremap <C-i> i <ESC>r
" Append char after cursor position
nnoremap <C-a> a <ESC>r
Ruto Collins
quelle