sharpek.net

moje trzy grosze

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 ;-)

 

Comments

No comments so far.

Leave a Reply

 
(will not be published)
 
 
 
 

Preview: