vi / vim Alternative zu sublimetext's "Auswahl auf Geltungsbereich erweitern"

13

Erhabener Text hat eine coole Funktion namens " Auswahl auf Bereich erweitern " UMSCHALT + CMD + LEERTASTE , die alles innerhalb des Bereichs auswählt.

Es wählt alles im Bereich aus, funktioniert perfekt () oder [] oder {} wiederholt es erweitert den Bereich auf seinen übergeordneten Bereich.

Ich möchte dasselbe mit vim erreichen.

Palaniraja
quelle

Antworten:

22

Wenn Sie gemeint haben vim, können Sie dies mit Visual-Mode ( :help visual-mode) und Text-Objekten ( :help text-objects) tun .

Um einen geschweiften Block auszuwählen, gehen Sie wie folgt vor : v+ a+ {, um den umschließenden Block auszuwählen, wiederholen Sie a+ {. Beachten Sie, dass Sie nur den Inhalt der geschweiften Klammern auswählen können, indem Sie ianstelle von verwenden a.

Diese Befehle werden, wie viele andere in vim, von einer Aktion gefolgt von einem Textobjekt erstellt, wobei dem Textobjekt eine Zahl vorangestellt werden kann, um weitere von der Aktion betroffene Objekte einzuschließen. Sie können das Objekt also auch löschen, vindem Sie des durch cusw. ersetzen oder durch usw. korrigieren .

Es gibt Textobjekte für viele andere Dinge neben (), {}und [], zum Beispiel:

  • a+ wbedeutet ein Wort.
  • a+ sbedeutet einen Satz.
  • a+ pbedeutet einen Absatz.
  • a+ <bedeutet einen <>Block.
  • a+ 'bedeutet eine Zeichenfolge in einfachen Anführungszeichen.
  • a+ "bedeutet eine Zeichenfolge in doppelten Anführungszeichen.

Möglicherweise interessiert Sie auch das Surround- Plugin, mit dem Sie umgebende Zeichen oder sogar Tags hinzufügen / ersetzen / löschen können.

Thor
quelle
Ja, ich bezog mich auf vim. Vielen Dank. gibt es eine Möglichkeit , es zum Beispiel den Ausbau zu halten., [[[event touchesForView: button] anyObject]wenn sich der Cursor in der Nähe ist touchesForViewAktion v+ a+ [wählt [event touchesForView: button]Ich möchte eine weitere Ebene erweitern? dh[[[event touchesForView: button] anyObject]
Palaniraja
3
@palaniraja: Ja, Sie können dem Textobjekt eine Zahl voranstellen, z. B.: v+ 2+ a+ [.
Thor
6

Das vim-expand-region-Plugin ermöglicht das Erweitern / Verkleinern des visuell ausgewählten Bereichs auf einen (konfigurierbaren) Satz von Textobjekten. Das heißt, Sie können mit der Auswahl einer Variablen beginnen, dann mit der Zuweisung, dann mit dem Block, dann mit der Funktion usw.

Ingo Karkat
quelle