LINUX.ORG.RU

Для чего интересного пригодны скрипты vim?


0

0

Я часто пользуюсь записывалкой действий (q). Но не вижу, как ей можно сделать такие действия:

1. Есть строка "buffer [ 33 ];". Навести на неё курсор, нажать клавишу и ниже получить строку "buffer [ 34 ];" Набрать "6 + <пара клавиш> и получить дальше 35 ... 40;

2. Есть строка "void classname :: Functor ( char *x )". Навести на неё курсор, нажать клавишу и внутри этой функции получить строку: "std::cout << "Hello, my name is ``Functor ( char *x )''" << std::endl; С этим справляется и записывалка действий (q): отъехать на имя класса, сделать CTRL+V, нажать END, шагнуть назад, нажать <y> и имя функции в буффере. Дальше дописать принтэф и вставить в него из буффера. Но когда имя класса поменяется, отъезжать мы будем на старое кол-во символов и промахиваться.

В общем, это решается вим-скриптами?

BTW это называется макросы а не скрипты.

1. Ключевое сочетание клавиш — <Ctrl>+A, <Ctrl>+X на нужном числе. Думаю, дальше сами дойдёте. Очень полезная штука, иногда сильно помогает.

2. Ничего не понял :)

Legioner ★★★★★
()

2. Для макросов рекомендуется использовать не перемещение по отдельным символам, а перемещение по словам:
b - на начало слова
e - на конец
w - на следующее слово
Ну и много других. Читать здесь :h

anonymous
()

Use Emacs, Luke!

anonymous
()
Ответ на: комментарий от Legioner

> 1. Ключевое сочетание клавиш — <Ctrl>+A, <Ctrl>+X на нужном числе. > Думаю, дальше сами дойдёте. Очень полезная штука, иногда сильно > помогает.

Ва-а-а-ау-у-у-у!!!

irc_007_1
() автор топика

Также рекомендую обратить внимание на специальную примочку для gcc __FUNCTION__ и __PRETTY_FUNCTION__

Burbaka ★★
()

>2. Есть строка "void classname :: Functor ( char *x )". Навести на неё курсор, нажать клавишу и внутри этой функции получить строку: "std::cout << "Hello, my name is ``Functor ( char *x )''" << std::endl;

для этого хорошо подходят регистры. Запоминаешь в регистр "q std::cout << "Hello, my name is `` , в регистр "w ''" << std::endl; (выделяешь нужный текст и нажимаешь "qy или "wy) потом остаётся обрезать void classname :: ( то есть, всё до :: включительно, 0df:x, получаешь строку Functor ( char *x ). Потом , если курсор стоит в начале строки вклеиваешь "q перед, а "w после строки: ^"qP$"wp

Очень быстро и удобно. Ещё регистрами удобно таблицы plain text переводить в html: в один регистр запоминаешь <tr> <td>, в другой </td></td>, в третий </td>, в четвёртый </td><td>, выделяешь текст таблицы, делаешь :'<,'>s!\(\s\+\)!\n!g чтобы клетки таблицы на отдельных строках, потом становишься в начало строки 0 и вклеиваешь префиксы из нужных регистров, смотря какая клетка по порядку в строке/таблице.

Сравни, сколько придётся долбаться для того же, без регистров :)

А вообще скрипты в Vim'е мощные, в примерах были игры "Жизнь", Ханойские башни командами Vim'а. (из команд ex, ЕМНИП, не vimscript).

anonymous
()
Ответ на: комментарий от anonymous

s!в другой </td></td>!в другой </td></tr>!g :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.