Gibt es einen vim-Befehl, um den Cursor auf die übergeordnete Klammer zu bewegen?

85

Gibt es einen vim-Befehl, um den Cursor auf die übergeordnete Klammer zu bewegen?

Ich habe eine Konfigurationsdatei wie diese und möchte direkt zur übergeordneten Klammer wechseln. Gibt es einen einfachen Bewegungsbefehl, um dies zu tun, oder gibt es eine Möglichkeit, Befehle zu kombinieren, um das zu tun, was ich will?

PARENT{ // I want to move my cursor here

   CHILD { stuff... }
   CHILD { stuff... }
   CHILD { stuff... }

...

   CHILD { stuff... } // my cursor is on this line
   CHILD { GRANDCHILD { more stuff } }
   CHILD { stuff... }
}
B Johnson
quelle

Antworten:

131

Ja. Tun[{ im normalen Modus. Es funktioniert jedoch möglicherweise nicht für alle Sprachen.

Viele Bewegungsbefehle sind unter verfügbar :help [.

Benoit
quelle
7
+1 für den Hinweis auf eine Funktion, die ich bereits seit Jahren verwende - wenn ich nur davon gewusst hätte. Und]} geht zur schließenden Klammer! Was für ein Haufen Tastenanschläge habe ich verschwendet ... `: -}
evadeflow
1
Hmm. Ich denke, dies geht jedoch nur an den 'aktuellen' Elternteil (?), So dass es nicht genau das tut, was das OP gewünscht hat. Gibt es eine Variante, die ganz nach oben oder unten zeigt?
Evadeflow
43

Sie können auch% drücken und es wird Ihre geöffnete oder geschlossene Klammer angezeigt

RusAlex
quelle
5
Sie müssen sich in der Nähe befinden, damit% funktioniert. Es ist nützlicher für die Klammeranpassung als für die Navigation.
user31986
1
@ user31986 Ich denke, Sie sind da falsch: Es funktioniert zum Öffnen und Schließen von Klammern. Eigentlich funktioniert es nicht nur für die Klammern, ([{}])sondern auch für Kommentare vom Typ C/*...*/
Alf
@ user31986 war jedoch im Wesentlichen richtig: Die Frage fordert Sie auf, von der Innenseite einer Struktur zu einer übergeordneten Klammer zu wechseln, während es bei dieser Antwort darum geht, von einem Symbol (Klammer, Klammer oder Klammer) zum passenden zu wechseln . Dies hängt zusammen, ist aber keine Antwort auf die Frage.
Eric O Lebigot
6

Es sieht so aus, als würde es [[tun, was Sie wollen. Und ][bewegt sich zur untersten Klammer. (Vielen Dank an @Benoit, der mich darauf hingewiesen hat, dass dies möglich sein könnte ...)

Ausweichen
quelle
3
'[[' & '] [' funktioniert nur, wenn die öffnende Klammer das erste Zeichen in der Zeile ist, nicht wenn es wie in der Frage ist. "PARENT {"
user31986