Gibt es ein Textobjekt für die aktuelle Zeile?


Antworten:


13

Hier ist eine grobe "Linie" Textobjekte:

xnoremap il g_o0
onoremap il :normal vil<CR>
xnoremap al $o0
onoremap al :normal val<CR>

Und ein grobes "Puffer" -Textobjekt:

xnoremap i% GoggV
onoremap i% :normal vi%<CR>

---BEARBEITEN---

Ein „Operator“ ist ein Befehl, der nichts tut sich selbst: d, yusw.

Durch Drücken dieser Tasten gelangen Sie in den "Operator-Pending-Modus", in dem Vim darauf wartet, dass Sie ihm mitteilen, was er ausführen soll ... mit einer "Operator-Pending-Bewegung".

Sie können benutzerdefinierte, vom Bediener ausstehende Bewegungen verwenden :omapoder :onoremapdefinieren. Die hier verwendete Technik ist inspiriert von :help omap-info:

  1. Sie definieren eine visuelle Moduszuordnung, die den gewünschten Bereich abdeckt.
  2. Sie verwenden diese Zuordnung in einer vom Bediener ausstehenden Zuordnung.

Beachten Sie, dass ich verwendet , :onoremapweil il, alund i%nicht existieren bereits. Wenn Sie beispielsweise eine vorhandene Bewegung oder ein vorhandenes Textobjekt überschreiben ip, müssen Sie eine rekursive Zuordnung verwenden : :omap.

:help :map-operator beschreibt eine etwas fortgeschrittenere Methode.

Siehe :help v_ofür oim visuellen Modus.


Cool. Würde es Ihnen etwas ausmachen, ein paar Teile davon zu erklären? Was ist o(Operator Pending Mode) in der Onoremap? Was macht der ovisuelle Modus? Ich würde vermuten, dass es "andere Seite" ist, weil es auf die andere Seite einer Auswahl zu springen scheint ... Wie finde ich :hdarauf? Ich kann es nicht mit :h x_ooder finden :h o.
Lindhe

Erklärung hinzugefügt.
Romainl

1

Ich würde eine zusätzliche Lösung vorschlagen, um ^ anstelle von 0 zu verwenden (die Zeile beginnt also am Anfang des ersten Zeichens:

xnoremap il g_o^
onoremap il :normal vil<CR>
xnoremap al $o^
onoremap al :normal val<CR>

Auf diese Weise wird die Einrückungsstufe berücksichtigt, wenn wir "in der Linie ändern".


Es gibt auch ein Plugin, das diese Funktionalität von vim master kana bereitstellt: github.com/kana/vim-textobj-line/blob/master/doc/…
Blasco
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.