Odpowiedzi:
Oto surowe „tekstowe” obiekty tekstowe:
xnoremap il g_o0
onoremap il :normal vil<CR>
xnoremap al $o0
onoremap al :normal val<CR>
I prymitywny „bufor” obiekt tekstowy:
xnoremap i% GoggV
onoremap i% :normal vi%<CR>
---EDYTOWAĆ---
Określenie „podmiot” jest poleceniem, że nic nie robi sama w sobie: d
, y
, itd.
Naciśnięcie tych klawiszy wprowadza cię w „tryb oczekiwania operatora”, gdzie Vim czeka, aż powiesz mu, na czym ma działać… z „ruchem operatora”.
Możesz użyć :omap
lub, :onoremap
aby zdefiniować niestandardowe ruchy oczekujące na operatora. Zastosowana tutaj technika jest inspirowana :help omap-info
:
Zauważ, że użyłem :onoremap
dlatego il
, al
i i%
nie istnieje. Jeśli są nadrzędne istniejący ruch lub tekstowych obiektu - mówią ip
- trzeba użyć rekurencyjnej mapowanie: :omap
.
:help :map-operator
opisuje nieco bardziej zaawansowaną metodę.
Zobacz :help v_o
na o
w trybie wizualnym.
o
(tryb oczekiwania operatora) w onoremap? Co robi o
w trybie wizualnym? Domyślam się, że jest to „druga strona”, ponieważ wydaje się, że przeskakuje na drugą stronę zaznaczenia ... Jak się :h
na nim znaleźć ? Nie mogę tego znaleźć przy pomocy :h x_o
lub :h o
.
Sugerowałbym dodatkowe rozwiązanie, aby użyć ^ zamiast 0 (więc linia zaczyna się na początku pierwszego znaku:
xnoremap il g_o^
onoremap il :normal vil<CR>
xnoremap al $o^
onoremap al :normal val<CR>
W ten sposób, jeśli wykonamy „zmianę w linii”, przestrzega poziomu wcięcia.