Мой vim
К слову, у меня установлен не vim, а gvim. При использовании в терминале он ни чем не отличается от обычного вима, но, возможно, работа некоторых плагинов в обычном виме будет отличаться.
Установка плагинов
В качестве пакетного менеджера для плагинов vim я использую vundle. Для установки надо просто склонировать репозиторий в директорию ~/.vim/bundle, создать.vimrc по шаблону и выполнить :PluginInstall.
Теперь для добавления нового плагина достаточно прописать строчку со ссылкой на него в конфиг и выполнить :PluginInstall.
Полезные шорткаты
Перед тем как перейти к установке плагинов, я хочу показать наиболее полезные шорткаты, без которых я с трудом представляю использование вима. Последующие команды прописываются в конфиг после вызова vundle#end().
По умолчанию кнопка <leader> привязана к , но мне удобнее переназначить её на запятую let mapleader="," .
Вим для копирования и вставки использует свои собственные буферы, поэтому я сделал шорткаты для копирования в системный буфер (обозначается символом “). Отдельные сокращаения для копирования между экземплярами вима (на всякий случай).
На заметку: vmap означает привязку сокращения к команде в режиме визуального выделения, а nmap — вне этого режима.
nmap <silent> // :nohlsearch<CR> — выключение подсветки результатов поиска.
Изменение регистра всего слова:
Переключение между режимами переноса строк:
Ввод пароля суперпользователя для сохранения файла с рут-правами:
Хранение истории undo после закрытия файла:
В случае, когда надо совершить вставку куска кода из системного буфера без использования вимовской автоматической табуляции, поможет следующий конфиг:
А этот шорткат найдёт метки мердж-конфликтов при работе с гитом:
Визуальное оформление
Плагин для темы jellybeans Plugin 'nanotech/jellybeans.vim'. Включаем цветовое оформление:
Теперь надо сделать редактор более удобным для работы с исходниками. Для этого мне понадобится отображение номеров строк, выделение текущей строки, подсветка результатов поиска ещё несколько опций:
Последняя опция добавляет удобное автодополнение команд редактора в командной строке.
Ещё одна важная настройка — это активация скролла и выделения мышью:
Стандартная строка состояния отображает мало информации, поэтому я подключил сторонний плагин:
Активация командной строки и установка темы:
Полный список тем можно посмотреть здесь. Если строка статуса отображается не так, как на скриншотах у разработчиков, позможно, есть проблемы с текущим шрифтом. Я прописал нужные символы в свой конфиг:
На заметку: пока искал информацию по кастомизации строки состояния, узнал что при выходе из режимов INSERT и VISUAL по нажатию <Esc> происходит небольшая задержка, потому что вим ждёт, что далее будет какая-то комбинация клавиш, начинающаяся с <Esc>. А мгновенный выход их этих режимов делается по <Ctrl-c>.
То, без чего нельзя представить современные текстовые редакторы — это дерево файлов. Есть плагин и для этого. Заодно добавил плагин для быстрого поиска по файлам проекта:
Теперь можно искать файлы по нажатию <Ctrl-p>.
Настройка редактора
Теперь к конфигурации непосредственно редактирования текста:
Но редактировать текст без автодополнения как-то скучно. Поэтому надо добавить плагины
и настроить автодополнение:
Для того, чтобы иметь возможность заменять строки сразу во всех файлах проекта по команде :Replace abc cba, надо поставить ещё один плагин:
Этот плагин, кстати, поддерживает регулярки по умолчанию и предоставляет более подробный поиск по :Grep abc.
При помощи Plugin 'mbbill/undotree' можно получить удобный доступ к истории изменения файла. Только надо сделать удобный шорткат для этого: nmap <silent> <leader>z :UndotreeToggle<CR>.
Ещё можно добавить подсветку опечаток и грамматически неверных слов в файлах некоторых форматов:
Окружение для разработки
Чтобы редактор мог находить определение функций или переменных в разных языках программирования, понадобится плагин, применяющий утилиту ctags. Устанавливаем exuberant-ctags в своей операционной системе и прописываем в .vimrc:
Теперь по нажатию <F8> можно посмотреть функции и классы, использующиеся в файле и перейти к их определению.
Я хочу иметь возможность запускать командную строку прямо в редакторе. Для этого понадобятся плагины:
Но сейчас недостаточно просто поставить плагины через пакетный менеджер. Надо ещё выполнить
Теперь можно запускать командную строку командой :VimShell.
Естественно, для нормальной разработки необходим git. Плагин fugitive даёт возможность работать с гитом прямо из вима. Можно использовать спецальные команды плагина, например, :Gstatus, а можно писать обычные комманды гита :Git status.
Для проверки синтаксических ошибок в языках программирования надо прописать в конфиг:
Плагин ale будет на лету прогонять код через линтеры. Соответственно, утилиты для проверки кода, например, flake8 для Python, должны быть установлены в системе. Для использования утилиты, проверяющей код, не по умолчанию, используется следующая запись:
Информацию по доступным утилитам можно посмотреть при помощи :help syntastic-checkers.
Мне очень нравится комментирование строк в IDE от JetBrains. По нажатию <Ctrl-/> там можно закомментировать все выделенные строки. Чтобы пользоваться аналогичной функциональностью в виме, надо прописать:
На заметку: в конфигах вима сочетания Control и слэша записывается как <C-_>.
Результат

Мой полный конфиг на данном этапе можно посмотреть здесь. А на гитхабе лежат мои текущие дотфайлы.
