VIM Text Objects…
…czyli dlaczego pamiętam wszystkie skróty w VIM ;-)
Za każdym razem gdy opowiadam komuś że na co dzień używam VIM, słyszę komentarz mniej więcej w takim stylu:
Przecież tam jest nieskończona liczba skrótów, jak Ty to wszystko zapamiętujesz?!
Małe sprostowanie VIM posiada skończoną liczbę skrótów – to jest pewne.
Większość tych skrótów wynika z mechanizmu tak zwanych Text Objects. TextObj używamy w trybie NORMAL i dzięki nim możemy w błyskawicznie zmienić jakiś fragment tekstu używając jednej z wielu akcji. TextObj można rozumieć jako zbiór różnych obiektów występujących w ramach tekstu (słowa, zdania, paragrafy, znaczniki, etc). Standardowo TextObject składa się z:
<akcja><obiekt>
Najczęściej używane przeze mnie „obiekty” to:
- World
- Paragraph
- Tag (html)
- Sentences – zdanie
- Znaki „, ‚, (, [, {, <
- Column – zmiana wartości w kolumnie (dostarczany przez plugin textobj-word-column.vim)
- Argument – zmiana argumentu funkcji (dostarczany przez plugin argtextobj.vim)
- Indent – zmiana całego wcięcia (dostarczany przez plugin vim-indent-object)
W skład każdego obiektu wchodzi:
- Inner – wewnątrz, np. it czyli inner tag
- A – zmiana całego obiektu np. at – a tag
Akcje które możemy zrobić to:
- Delete
- Change – różni się od delete że po usunięciu od razu przechodzimy w tryb INSERT
- Yank
- Visual
- Surround (dostarczany przez vim-surround)
W internecie można znaleźć o wiele więcej obiektów i akcji. Jednak na początek lista którą przedstawiłem powinna wystarczyć. Mając już taką wiedzę można bardzo szybko ułatwić sobie edycję tekstu. Poniżej ciekawych przykładów wykorzystywania TextObj.
Change surround ‚ to ” (zmień ‚ na ” dla danego fragmentu)
cs'"
'Lorem ipsum' => "Lorem ipsum"
Delete in tag (Wszystko wewnątrz taga HTML zostanie skasowane)
dit
<h2>Lorem ipsum</h2> => <h2></h2>
Change in < (Wszystko między < a > zostanie zmienione)
ci<
<h2>Lorem ipsum</h2> => <h2>■</h2>
Change in word (Słowo zostanie zmienione
ciw
Lorem ipsum => ■ ipsum
Visual in tag (Tekst wewnątrz taga HTML zostanie zaznaczony
vit
<h2>Lorem ipsum</h2> => <h2>Lorem ipsum</h2>
Yank surround in sentence <em> (Całe zdanie zostanie umieszczone w znaczniku EM
ysis<em>
Lorem ipsum dolor sit amet enim. Etiam ullamcorper. => Lorem ipsum dolor sit amet enim. <em>Etiam ullamcorper.</em>
Change in Column (zmiana całej kolumny w tekście, np. gdy używamy CSV
cic
Lorem ipsum dolor
Pellentesque ornare posuere
Cum sociis natoque
=>
Lorem ■ dolor
Pellentesque ■ posuere
Cum ■ natoque
Change in argument
cia
def foo(bar=1, baz=2) => def foo(■, baz=2)
Mam nadzieję że ten wpis ułatwi i przyśpieszy komuś pracę z VIM ;-)
Preview: