Vim – makra

Posted on Updated on

Nagrywanie makra rozpoczynamy klawiszem “q” a nastepnie wybieramy literę do której przypiszemy makro. Potem wciskamy sekwencje klawiszy, które będą makrem. Wszystko kończymy znowu klawiszem “q”. Podczas nagrywania na dole pojawi się dopisek :recording”.

Przykład

Aktualnie przerabiam kod z F# na Haskella. Czesto więc pojawiają się rzeczy które w Haskellu są nadmiarowe i które trzeba wykasować na np “let ” oraz “new “.

ql:s/let //[ENTER]q – taka sekwencja klawiszy sprawi że zostanie nagrane makro które wykasuje jedno wystąpienie ciagu “let ” z aktualnej linii.

Uruchomienie makra – @l

Dokładniejsze zamiany

powyższy kod jest “naiwny” tzn zachowa się źle w niektórych przypadkach np zamieni słowo “costamlet “. Żeby wyłapać kiedy “let” jest całym słowej dajemy

s:\<let\> :: – ale o tych i innych rzeczach trzeba już poczytać w bardzo intuicyjnej dokumentacji – bez linka bo google sobie radzi.

Backreferences

Chodzi o inteligentniejsze zamiany czyli podmianę tylko części. Chcielibyśmy aby “… (rabbit : Rabbit) …” zostało zamienione na “… rabbit …”. W F# czasem potrzebne było dokładne wyspecyfikowanie typu argumentu, natomiast w Haskellu tego nie potrzebuję. Makro które to zamiani.


s:(\(\w\+\) \: \w\+):\1:
– dopasuj cały tekst między nawiasami a pierwszy wyraz dopasuj jako grupe. Następnie zamiast całego dopasowanego tekstu zostaw tylko to co zostało w grupie “1” czyli “rabbit”.

Btw nie musimy myśleć o tym tylko jako o makrze. Można też obyć się bez makra tylko po prostu w linii komend na dole wykonując ten kod.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s