Verschiedene Anträge:%
Der %
Befehl springt zur Übereinstimmung des Elements unter dem Cursor. Positionieren Sie den Cursor auf dem öffnenden (oder schließenden) Paren und verwenden Sie ihn y%
zum Ziehen oder d%
Löschen von allem vom Cursor zum passenden Paren.
Dies funktioniert, weil %
es sich um einen "Bewegungsbefehl" handelt, sodass er überall dort verwendet werden kann, wo vim einen solchen Befehl erwartet. Von :help y
:
["x]y{motion} Yank {motion} text [into register x]. When no
characters are to be yanked (e.g., "y0" in column 1),
this is an error when 'cpoptions' includes the 'E'
flag.
Standardmäßig enthält "Element" Klammern, Klammern, Parens, Kommentare im C-Stil und verschiedene Precompiler-Anweisungen ( #ifdef
usw.).
Es gibt ein Plugin für "Extended% Matching", das Sie auf der Vim-Homepage finden .
Sie können die Dokumentation zu %
und zugehörige Bewegungsbefehle lesen, indem Sie :help various-motions
in den Befehlsmodus wechseln.
Objektauswahl
Es gibt einen weiteren Satz von Bewegungsbefehlen, mit denen Sie im visuellen Modus verschiedene Textobjekte auswählen können.
Um Ihr spezifisches Problem zu lösen, gehen Sie wie folgt vor:
printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));
^
Angenommen, Ihr Cursor befindet sich auf ^
. Geben Sie die folgende Reihenfolge ein, um das gesuchte Teil auszuwählen:
v2a)
Zuerst v
tritt visuellen Modus, Sie dann angeben , dass Sie gehen wollen 2
Ebene des Pars auf. Schließlich a)
wählt das "einen Block". Danach können Sie verwenden d
oder x
löschen usw.
Wenn Sie die äußeren Parens nicht einbeziehen möchten, können Sie stattdessen "innerer Block" verwenden:
v2i)
Siehe :help object-select
die vollständige Liste der im Zusammenhang Befehle.
a
"um" und nicht "a". Fühlen Sie sich wie es "innerlich" besser ergänzt. Es vergeht kein Tag, an dem man anscheinend nichts Neues über Vim lernt.Was ist mit
dib
oderdi(
.Der innere (...) Block, in dem sich der Cursor befindet, wird gelöscht .
Ich liebe Text-Objekt Bewegungen und Auswahl!
quelle
dab
=>Um alles zu löschen, was sich in einem Klammerpaar befindet, können Sie immer
di(
und seine Ableitungen ausgeben .Hinweis :
Wie @porglezomb in seinem Kommentar vorgeschlagen hat, können Sie
a
("zusammen mit") anstelle voni
("inside") verwenden, um die Klammern einzuschließen. Also, mitda(
Löschungen alles innerhalb(
und)
einschließlich(
und)
.Löschen von Text innerhalb des unmittelbaren äußeren Klammerpaars:
Also für diese Codezeile
Unter der Annahme, dass sich Ihr Cursor innerhalb des oben genannten Cursorbereichs befindet, können Sie die folgenden Befehle ausführen:
Löschen von Text innerhalb des n-ten äußeren Klammerpaars:
Um alles in das n-te äußere Klammerpaar aufzunehmen, fügen Sie es einfach
n
vor dem obigen Befehl hinzu. Also, mit der gleichen Cursorposition wie oben,quelle
a
als Gegenstück gesprochen wirdi
, da dies wahrscheinlich vielen Menschen helfen wird.%
dieses Problem "missbrauchen" , aber dies nimmt mehr Zeit in Anspruch und sollte meiner Meinung nach nur für komplexere Szenarien verwendet werden. Das Löschen von Objekten innerhalb eines bestimmten Bereichs ist genau der Anwendungsfalldi
.Sie können
d%
zum Löschen undy%
zum Ziehen verwenden.quelle
Setzen Sie den Cursor auf die erste Klammer und drücken Sie
v%y
oderv%d
.quelle
Versuchen Sie es mit ci [Block-Surrounder]
Platzieren Sie in Ihrem Fall den Cursor irgendwo zwischen den beiden Klammern, die Sie hervorgehoben haben, und versuchen Sie es mit den Tasten: ci (
quelle
Als Antwort von David Norman sagt:
Setzen Sie den Cursor auf die erste Klammer und drücken Sie
v%y
oderv%d
.Erläuterung von http://vimdoc.sourceforge.net/htmldoc/vimindex.html :
Dies bedeutet, dass alles zwischen und einschließlich der beiden Klammern (
%
) ausgewählt wird, während die Auswahl visuellv
angezeigt wird ( ) und dann gezogen / kopierty
oder gelöscht / ausgeschnittend
wird. (Zum Standardpuffer.)Sie können mit setzen / einfügen mit
p
.Machte diese Antwort, um "mir das Fischen beizubringen" .
quelle