Markieren Sie den Block anhand der Einrückungsebene in Vim

8

Ist es möglich, einen Block in Vim basierend auf dem bereits vorhandenen Einzug zu markieren? Ähnlich wie v {.

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

Markieren Sie zum Beispiel alles zwischen dem ersten Let und Return in dieser Funktion:

%Vor%

Ссылка

    
Daniel W 11.09.2011, 11:02
quelle

2 Antworten

7

Ich benutze das Objekt zum Einziehen von Objekten :

  

Dieses Plugin definiert ein neues Textobjekt, basierend auf Einrückungsebenen.   Dies ist sehr nützlich in Sprachen wie Python, in denen die Syntax   Definiert Umfang in Bezug auf die Einrückung. Verwenden der Objekte definiert in   Mit diesem Plugin kann schnell eine komplette if-Struktur ausgewählt werden, z   Beispiel.

Damit können Sie Blöcke unter Verwendung der Standard-Vim-Textobjektbefehle auswählen, löschen, ändern usw., indem Sie "i" und "a" verwenden, um auf den Block zu verweisen, in dem Sie sich befinden: "vii", "dii" , etc. Es ist sprachunabhängig, ist aber besonders nützlich / relevant in whitespace-strukturierten Sprachen wie Python.

    
Jeet 11.09.2011, 13:20
quelle
4

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

Wenn Sie set foldmethod=indent ...

haben

Sie können eine visuelle Blockauswahl verwenden.

Geben Sie in Zeile 3 einfach V]z ein.

%Vor%
  

BEWEGEN ÜBER FOLTEN

     

[z

     

Gehe zum Anfang der aktuellen offenen Falte. Wenn schon am Anfang, gehe zum Anfang der Falte, die ihn enthält. Wenn keine Falte vorhanden ist, schlägt der Befehl fehl. Wenn eine Zählung verwendet wird, wiederholt das Kommando [count] mal.

     

] z

     

Gehe zum Ende der aktuellen offenen Falte. Wenn bereits am Ende, gehe zum Ende der Falte, die es enthält. Wenn keine Falte vorhanden ist, schlägt der Befehl fehl. Wenn eine Zählung verwendet wird, wiederholt das Kommando [count] mal.

     

zj

     

Gehen Sie nach unten zum Anfang der nächsten Falte. Eine geschlossene Falte wird als eine Falte gezählt. Wenn eine Zählung verwendet wird, wiederholt das Kommando [count] mal. Dieser Befehl kann nach einem Operator verwendet werden.

     

zk

     

Bewegen Sie sich bis zum Ende der vorherigen Falte nach oben. Eine geschlossene Falte wird als eine Falte gezählt. Wenn eine Zählung verwendet wird, wiederholt das Kommando [count] mal. Dieser Befehl kann nach einem Operator verwendet werden.

    
Casey Jones 17.07.2012 23:18
quelle