Surround mit Anführungszeichen optimieren
Ich möchte ein Wort mit Anführungszeichen umgeben
Hier ist mein Befehlssatz:
ciw
- Wenn ich mich dann im Einfügemodus befinde, 'tippe ich (ich verwende die vim-
Erweiterung für visuellen Code, damit ich zwei bekomme.'
Ich weiß nicht, ob dies bei "normalem" vim der Fall ist). - dann Ctrl+ C+t
- dann p
Es funktioniert, aber es kann eine kürzere Version geben, um dies zu erreichen. Könntest du helfen ?
Antworten
Sie können versuchen, das Vim-Surround- Plugin. Um ein Wort in Anführungszeichen zu setzen, werden Sie gehen ysiw'
. Das Plugin gibt Ihnen die Möglichkeit:
add (
ysiw"
)word -> "word"
change (
csiw"'
)'word'
delete (
ds'
)word
die Umgebung nicht nur von einzelnen Wörtern, sondern von allen Arten von Textobjekten:
Wörter in Klammern umgeben (
ysi)"
)def func(some sequence of words) -> def func("some sequence of words")
Klammern in eckige Klammern ändern (
cs)]
)list = (var1, var2, var3) -> list = [var1, var2, var3]
Wenn Sie die VS-Code-Erweiterung verwenden, von der ich glaube, dass Sie sie sind, dann verstehe ich, dass sie mindestens einige Plugins unterstützt, und eines davon ist Vim-Surround . Wenn dies der Fall ist und Sie Plugins verwenden möchten, springen Sie einfach zum letzten Absatz. Ansonsten lesen Sie weiter.
Aus dem Normalmodus mit dem Cursor auf das erste Zeichen des Wortes, das Sie tun könnten ...
i"<C-O>f<Space>"<Esc>
Ctrl-O
Geben Sie unter Einfügen einen Befehl für den Normalmodus ein, bevor Sie zu Einfügen zurückkehren.
f<Space>
geht zum nächsten Leerzeichen in der Zeile (nach dem Wort).
Ein Problem dabei ist, wenn dem Wort kein Leerzeichen folgt (z. B. wenn Sie sich am Ende der Zeile befinden oder ein Interpunktionszeichen folgt). Sie müssten den Befehl Normalmodus anpassen (z . B. auf f.
oder $<Left>
).
Das ist nur ein Beispiel dafür, wie man dies erreicht, aber ich denke, anstatt zu versuchen, einen manuellen Befehl zu optimieren, sollten Sie etwas Robusteres (aber Kompliziertes) verwenden und es in ein Mapping einfügen. Zum Beispiel dieser Substitutionsbefehl:
:%s/\<\w*\%#\w*\>/"&"
Das heißt, nehmen Sie die Cursorposition ( \%#
) und alle sie umgebenden Wortzeichen (beide \w*
) und ersetzen Sie sie durch sich selbst, umgeben von Anführungszeichen.
Ein Normalmodus-Mapping dafür:
:nnoremap <leader>q :%s/\<\w*\%#\w*\>/"&"<CR>
Jetzt haben Sie die Dinge auf ein oder zwei Tastendrücke optimiert ... unabhängig von der Länge des Mappings, das Sie auswählen.
Was ich jedoch wirklich vorschlagen würde, ist, dass Sie nur das Vim-Surround- Plugin erhalten. Dann können Sie Wörter (und mehr) einfach mit allem umbrechen, mit dem Sie normalerweise Wörter umbrechen würden (z. B. Parens).