vim

Рецепты для Vim

Dmitry Vasiliev 18:04, 2012 2 15 09:07, 2008 9 30

Здесь собраны удобные команды, или подходы к работе в Vim которые могут быть полезны не только мне. Соответственно можно использовать описанные команды напрямую, или адаптировав под свою ситуацию.

Отступы

Достаточно часто различные проекты используют разные стили кодирования и одним из условий может быть использование определенного стиля отступов. Например, в стандартной библиотеке Python для кода Python используются отступы 4-мя пробелами, а для кода C - отступы табуляцией равной 8-ми пробелам. Для изменения отступов в Vim используются следующие опции:

  • tabstop - количество пробелов которое используются для табуляции;
  • shiftwidth - количество пробелов которое используется в командах отступа, например >>, или <<;
  • expandtab - определяет нужно ли заменять табуляцию на соответствующее количество пробелов;

Что бы совсем упростить себе жизнь я определил пару команд в своем файле конфигурации ~/.vimrc:

com SpaceIndent :set tabstop=4| set shiftwidth=4| set expandtab
com TabIndent :set tabstop=8| set shiftwidth=8| set noexpandtab

Теперь если мне нужны отступы 4-мя пробелами, я ввожу :SpaceIndent. А если нужно использовать стандартную табуляцию - :TabIndent. Для еще большей автоматизации можно пойти дальше и определить автоматические команды, с помощью команды :autocmd, которые будут включать необходимый тип отступов в зависимости от имени, или пути к открываемому файлу.

Строка статуса

Мне нравится когда информация о файле всегда на экране и поэтому в файле конфигурации ~/.vimrc я использую следующие команды:

set wildmenu
set laststatus=2
set statusline=%<%f\ [%Y%R%W]%1*%{(&modified)?'\ [+]\ ':''}%*%=%c%V,%l\ %P\ [%n]

Рассмотрим каждую строчку подробнее:

  • wildmenu - при использовании авто-дополнения в командной строке показывать доступные варианты над командной строкой. При этом доступны дополнительные команды выбора варианта дополнения. Подробности смотрите командой :help 'wildmenu';
  • laststatus - определяет, имеет ли единственное окно на экране строку статуса. Значение 2 указывает, что строка статуса всегда должна показываться;
  • statusline - задает формат строки статуса. У меня показываются: имя файла, тип файла и режим в котором он открыт, подробное положение в файле и номер буфера;

Графический интерфейс

В повседневной работе очень часто использую графический интерфейс через GVim. Вот несколько команд из моей конфигурации ~/.vimrc:

if has("gui")
    set guioptions+=b
    set guioptions-=T
    set columns=80
    set lines=50
endif

Здесь:

  • guioptions - определяет какие компоненты и опции графического интерфейса должны использоваться. Значение +=b добавляет нижнюю горизонтальную полоску прокрутки, что удобно в случае текста с длинными строчками. Значение -=T убирает панель инструментов - я очень редко пользуюсь даже верхним меню, так что панель инструментов только занимает место на экране;
  • colums - задает количество колонок текста в окне. 80 - это классическое количество символов в строке, которое будет хорошо читаться, не "вылезая за экран", на подавляющем большинстве терминалов;
  • lines - задает количество строк текста в окне. Здесь мне нравится число побольше и 50 - оптимальное количество строк помещающихся на экране при оптимальном для меня размере шрифта;

Проверка орфографии

Постоянно забываю как подключить проверку русской орфографии, поэтому здесь этот раздел.

С FTP сервера Vim нужно забрать два файла с расширениями .spl и .sug для нужного языка и кодировки. Для русского языка в моем случае это: ru.utf-8.spl и ru.utf-8.sug. После этого эти файлы нужно положить в директорию ~/.vim/spell/ и для включения проверки выполнять следующую команду:

:setlocal spell spelllang=ru

Пример полной конфигурации

Мой файл конфигурации для Vim, в том числе включающий некоторые примеры выше:

  • vimrc Версия 0.2 (30.12.2008)