Хитрости 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 номер вхождения.
Ссылки
~~LINKBACK~~







Дискуссия
y% и y( очень улыбнуло. Логично :)
Что-то в моём мозге не принимает подобные среды обработки текста.
Может быть, есть какой-то howto, позволяющий «въехать» в эту идеологию? Был бы рад увидеть. А пока по умолчанию использую kate
Вот здесь ИМХО хорошо написано »Почему - VIM?».
Вообще, после vi перестаёшь въезжать в идеологию простейших редакторов и перестаёшь понимать, к чему столько ненужных движений пальцами
В последней правке нарушил структуру списка сейчас
''y('' / ''y)'' - скопировать соответственно до начала или до конца абзаца. Т.е. до первой пустой строки. //Здесь ''('', '')'' команды перемещения курсора.надо
''y('' / ''y)'' - скопировать соответственно до начала или до конца абзаца. Т.е. до первой пустой строки. //Здесь ''('', '')'' команды перемещения курсора.//Надеюсь не сломаю дизайн длинными цитатами
Спасибо. Проглядел.
- **полужирный**
- //курсив//
- > цитата
- [[http://link | Заголовок ссылки]]
Больше о синтаксисе...