Month: April 2015

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