понедельник, 8 октября 2012 г.

"Великое колдунство" с vim.

Вообще vim - это настолько необъятная вещь, что не зависимо от того, сколько лет с ним работаю, каждый раз нахожу что-то новое и новое! Так что оставлю тут эту запись, что бы не забыть очередное "колдунство" с помощью этого редактора. ;)

Речь пойдет о странном регистре @= и не менее странно комбинации i^R ;) Да что тут говорить, вот пример:

clock.tick(20)

Нам надо поменять число на разницу между ним и 15 (надумано, но что бы показать идею - пойдет). Далее нажимаем:

/33<CR>dei^R=^R"-15<CR><ESC>

И вуаля! :) Объясняю:

/33 - ищем число
de - удаляем его (оно оказывается в регистре @")
^R= - это Crtl + R потом = (попадаем в режим ввода выражения)
^R" - вставка из регистра @"
-15 - собственно вычитаем 15 :)
Ну и выходим из режима редактирования.

Как я уже сказал пример "притянут за уши", но работа с этим регистром - вещь очень нужная. Ладно тут я решил одно число поменять. А если бы мне надо было в 1000 стоках из разных чисел вычесть/прибавить/умножить/разделить? Воот! То то и оно. :)

P.S. К стати еще один вариант решения вопроса, который я не знал. :) Тоже надо запомнить! ;)

:% s/20/\=submatch(0)-15/