Главная Облако тегов     Подписка на ленту обновлений (RSS) XMPP (Jabber) совместимые службы мгновенных сообщений. К примеру Google Talk, Gizmo, jabber.org Пишите письма О сайте
Вы находитесь здесь: Заметки экспериментатора » Хитрости VIM
Translations of this page:

Хитрости VIM

Без сомнения, в сети полно подобных заметок, но здесь я соберу свои «заклинания» VIM.

  • 20<C-a> - увеличит число под курсором на 20. Число может быть десятичным (134), шестнадцатиричным (0x86) или восьмеричным (0777).
  • 17<C-x> - аналогично, уменьшит число под курсором на 17. Если модификатор повторения (17) не указывать, числа будут уменьшаться/увеличиваться на единицу.
  • yypWE<C-a>E<C-a> - позволяет сдублировать с автоинкрементацией строки вида #define wSIPR0 0x000F.
  • gUe - капитализировать до конца слова.
  • gue - до конца слова сделать все буквы маленькими.
  • gUU - капитализировать линию.
  • y% - скопировать блок вместе с парными скобками. Курсор должен стоять на одной из скобок. Здесь y команда копирования, % команда перемещения к соответствующей скобке.
  • y( / y) - скопировать соответственно до начала или до конца абзаца. Т.е. до первой пустой строки. Здесь (, ) команды перемещения курсора.
  • d3t) - удалить всё до третей скобки. А здесь ) это всего лишь обычный символ.
  • d2f. - удалить всё включая вторую точку.
  • . - точка, повторяет последнюю команду модифицирования текста. Под модифицированием подразумевается вставка текста, замена, удаление, вставка из буфера, смещение строк (<).
  • К примеру, производим замену некого слова на test cw test <ESC>. После этого переместившись на другое слово и нажав точку . мы повторим эту последовательность автомитически и слово будет заменено на test.
  • 3>>..2.5.. - данная последовательность сдвинет три строки вправо, повторит сдвиг два раза. Сдвинет две строки вправо, и наконец произведёт два сдвига пяти строк.
  • <C-E>, <C-Y> в нормальном режиме прокручивает экран вверх и вниз. Курсор при этом остаётся на своей позиции. В режиме вставки копирует символ из той же колонки соответственно из следующей или предыдущей строки.
  • :read !date -R - вставить в документ дату в формате rfc-2822.
  • :set syntax=<hltype> - установить конкретную схему подсветки синтаксиса.
  • :options - текущии опции VIM.

Индивидуальные настройки файла

При открытии файла vim анализирует его содержимое и если встречает строку содержащую vim: <param1>[:<param2>[:…:<paramN>]], то использует указанные параметры для своей конфигурации. Обычно в исходном тексте эту строку скрывают в комментарии. Размещать её можно в любом месте текста, но я рекомендую размещать ещё в начале.

Пример для Makefile:

# vim: sw=8:ts=8:si:noexpandtab

Пример для ассемблера AVR (при установленной схеме расцветки):

; vim: sw=4:ts=4:si:et:filetype=asm:syntax=avr

Пример для HTML:

<!-- Setup VIM: ex: et ts=2 shiftwidth=2 enc=utf-8 : -->

Пример для C/C++:

// vim: sw=4:ts=4:si:et

Навигация по коду

Vim помогает бродить по исходному коду проекта используя файлы ctags.

Не мудрствуя лукаво, для генерации индекса я воспользовался командой взятой из сети, и повесил её на горячую комбинацию:

" Ctags gen
imap <C-F12> <Esc>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>a
nmap <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>

Для перехода к определению слова на котором находится курсор1) используется комбинация C-]. Для возврата обратно - C-t. Все переходы сохраняются во внутреннем стеке переходов, так что вернуться можно из достаточно глубоких дебрей2).

Тут есть свои тонкости: прыжок происходит всегда к первому найденому определению. Если же их несколько (к примеру в в заголовчном файле .h и в реализации .c), то перейти к последующим придётся комбинацией <n><C-]>, где n номер вхождения.

Ссылки

1) в любом месте слова
2) возможно размер стека и неограничен

Дискуссия

antono, 2007/07/15 03:34

y% и y( очень улыбнуло. Логично :)

virens, 2007/07/15 11:20

Что-то в моём мозге не принимает подобные среды обработки текста. :-) Может быть, есть какой-то howto, позволяющий «въехать» в эту идеологию? Был бы рад увидеть. А пока по умолчанию использую kate :-)

Ivan A-R, 2007/07/16 12:07

Вот здесь ИМХО хорошо написано »Почему - VIM?».

Вообще, после vi перестаёшь въезжать в идеологию простейших редакторов и перестаёшь понимать, к чему столько ненужных движений пальцами =)

denger, 2007/11/07 19:00

В последней правке нарушил структуру списка сейчас

''y('' / ''y)'' - скопировать соответственно до начала или до конца абзаца. Т.е. до первой пустой строки. //Здесь ''('', '')'' команды перемещения курсора.

надо

''y('' / ''y)'' - скопировать соответственно до начала или до конца абзаца. Т.е. до первой пустой строки. //Здесь ''('', '')'' команды перемещения курсора.//

Надеюсь не сломаю дизайн длинными цитатами

Ivan A-R, 2007/11/08 10:18

Спасибо. Проглядел.

Enter your comment (wiki syntax is allowed):
Краткая справка
  • **полужирный**
  • //курсив//
  • > цитата
  • [[http://link | Заголовок ссылки]]
Больше о синтаксисе...
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
vim-tips.txt · Последние изменения: 2008/05/27 18:18 От plumbum