Мой 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-_>.

Результат

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

Михаил Чугунков

Written by

https://chugunkov.website

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade