Markierungsblock basierend auf Einrückungsstufe in Vim

Ist es möglich, einen Block in Vim zu markieren, der auf der bereits vorhandenen Einrückung basiert? Ähnlich wie v {.

Es wäre sehr nützlich für Programmiersprachen mit whitespace-sensitiver Syntax (wie Haskell und Python).

Zum Beispiel markieren Sie alles zwischen dem ersten let und return in dieser Funktion:

checkArg (com:arg) sd ns | com == "add-source " = do let s' = v ++ s lift $ saveLinks s' return (s', d) | com == "remove-source" = do let s' = filter (not . hasWord str) s lift $ saveLinks s' return (s', d) 

Http://de.wikipedia.org/wiki/Off-side_rule

2 Solutions collect form web for “Markierungsblock basierend auf Einrückungsstufe in Vim”

Ich benutze das Einrückungsobjekt-Plugin :

Dieses Plugin definiert ein neues Textobjekt, basierend auf Einrückungsstufen. Dies ist sehr nützlich in Sprachen wie Python, in denen die Syntax definiert Umfang in Bezug auf die Einrückung. Mit den in diesem Plugin definierten Objekten kann zB eine komplette if-Struktur schnell ausgewählt werden.

Hiermit können Sie die Standard-Vim-Textobjektbefehle mit "i" und "a" auswählen, löschen, ändern usw. bearbeiten, um auf den Block zu verweisen, in dem Sie sich befinden: "vii", "dii" usw. Es ist sprachlich-agnostisch, aber besonders nützlich / relevant in whitespace-strukturierten Sprachen wie Python.

Das Plugin Jeet verlinkt mit sieht ordentlich, aber hier ist eine einfache Alternative.

Wenn du set foldmethod=indent

Sie können eine visuelle Blockauswahl verwenden.

Also beginnend auf Zeile 3, geben Sie einfach V]z .

 :help fold-commands 

BEWEGEN ÜBER FOLDS

[Z

Gehe zum Anfang der aktuellen offenen Falte. Wenn schon am Anfang, ziehe dich an den Anfang der Falte, die es enthält Wenn keine Falte vorhanden ist, schlägt der Befehl fehl. Wenn ein Count verwendet wird, wiederholt man den Befehl [count] mal.

] Z

Gehe zum Ende der aktuellen offenen Falte. Wenn bereits am Ende, um das Ende der Falte, die es enthält zu bewegen. Wenn keine Falte vorhanden ist, schlägt der Befehl fehl. Wenn ein Count verwendet wird, wiederholt man den Befehl [count] mal.

Zj

Gehe nach unten zum Anfang der nächsten Falte. Eine geschlossene Falte wird als eine Falte gezählt. Wenn ein Count verwendet wird, wiederholt man den Befehl [count] mal. Dieser Befehl kann nach einem Operator verwendet werden.

Zk

Nach oben bis zum Ende der vorherigen Falte. Eine geschlossene Falte wird als eine Falte gezählt. Wenn ein Count verwendet wird, wiederholt man den Befehl [count] mal. Dieser Befehl kann nach einem Operator verwendet werden.

Python ist die beste Programmiersprache der Welt.