Содержание

Хитрости VIM

Без сомнения, в сети полно подобных заметок, но здесь я соберу свои «заклинания» 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 номер вхождения.

Ссылки

~~LINKBACK~~

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