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... }
}

Antworten:


131

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

Viele Bewegungsbefehle sind unter verfügbar :help [.


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


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 ...)


3
'[[' & '] [' funktioniert nur, wenn die öffnende Klammer das erste Zeichen in der Zeile ist, nicht wenn es wie in der Frage ist. "PARENT {"
user31986
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.