Код
#статьи

Курс по Vim. Часть 4. Плагины, файл .vimrc и NERDTree

Мы запустили бесплатный курс по легендарному редактору кода Vim. В нём 16 уроков. Сегодня — плагины, .vimrc и NERDTree.

Иллюстрация: Polina Vari для Skillbox Media

За 16 уроков мы рассмотрим всё, что нужно для старта работы с Vim:

  • историю текстовых редакторов;
  • работу в режиме вставки, в командном режиме, режиме командной строки, визуальном режиме;
  • использование регулярных выражений и создание макросов;
  • плагины, пакетные менеджеры плагинов;
  • конфигурацию Vim, работу с файлом .vimrc (в частности, на примере файла .vimrc автора курса);
  • работу с Neovim;
  • настройку автодополнения.

Сегодня будет три видеоурока. Подробно разберём плагины, .vimrc и NERDTree.

Как устроен курс

Мы публикуем видеоуроки и текстовые расшифровки — вы можете смотреть или читать теорию.

Автор курса

Паша Калашников

Тимлид в Purple Magic, продюсер видео в Red Magic, соведущий IT Way Podcast, автор курсов по этому вашему программированию. Любит Ruby.

Урок 11


Плагины и пакетные менеджеры плагинов

Поговорим об инфраструктуре Vim: разберём, что такое плагины, пакетные менеджеры, как их настраивать, как использовать готовые сборки для разных языков программирования, и, наконец, познакомимся с Neovim.

Плагины — это те самые инструменты, которые позволяют Vim не отставать от современных IDE, хоть и в своём стиле. Сразу посоветуем отличный сервис для их поиска — vimawesome.com. Плагины там разделены по языкам программирования, стекам технологий, фичам и так далее.

После урока вы можете перейти на сайт и попробовать плагины для своего окружения. Мы же начнём с самых общих принципов работы с ними, подробно остановившись на парочке основных.

Что такое пакетный менеджер

Пакетные менеджеры помогают устанавливать, обновлять и удалять программы. Если вы опытный пользователь Unix-подобных систем, вы точно с ними знакомы. В случае с Vim пакетными менеджерами называют плагины, которые позволяют легко устанавливать и удалять другие плагины.

Большинство пакетных менеджеров просто скачивают плагины с GitHub и выполняют установочные скрипты, которые в них заложены. Управление версиями в данном случае — не самая сильная их сторона, потому что конфликты версий в инфраструктуре Vim-плагинов очень редки.

Самый популярный пакетный менеджер для Vim — Vundle. Рассмотрим его более современный аналог под названием vim-plug. У него есть несколько преимуществ. Во-первых, он лучше совмещается с Neovim. Во-вторых, он более отзывчив к пользователю, то есть лучше описывает ошибки, которые могут возникнуть в процессе установки. Приведём один пример его использования.

Сначала установим vim-plug. В его Readme на GitHub есть подробная инструкция по установке в разных операционных системах:

Скриншот: Skillbox Media

Установка не всегда проходит без проблем; если что-то пошло не так, перейдите в Issues репозитория и поищите описание ситуации, похожей на вашу:

Скриншот: Skillbox Media

Скорее всего, нечто подобное уже с кем-то случалось — и благополучно разрешилось.

А мы тем временем открываем файл .vimrc:

Скриншот: Skillbox Media

В Linux-системах он по умолчанию находится в домашней директории. Загуглите, где он в вашей ОС. Это несложно.

В файле вводим строку call plug#begin ():

Скриншот: Skillbox Media

Данная команда означает начало блока, который исполнится плагином vim-plug. Мы хотим установить плагин vim-sensible. Вводим название в поиске на сервисе vimawesome.com. Переходим по ссылке на GitHub. Берём из ссылки имя пользователя GitHub и название репозитория:

Скриншот: Skillbox Media

Вызываем в .vimrc метод Plug и набираем в кавычках через слеш имя пользователя и название репозитория:

Скриншот: Skillbox Media

Вводим команду : PlugInstall. Видим статус установки:

Скриншот: Skillbox Media

Плагин установлен!

По такому же принципу устанавливают практически все плагины в Vim. Конечно, есть и те, что не поддерживают установку через vim-plug, Vundle или иные пакетные менеджеры. Но с годами их становится всё меньше: люди реже пользуются плагинами, которые нельзя установить легко.

Полезные плагины для Vim

Пройдёмся по самым часто используемым плагинам, которые может использовать каждый специалист вне зависимости от стека технологий.

vim-sensible. Плагин vim-sensible применяет общепринятые настройки Vim. Также он хорош, если вам нужно копаться на сервере в Vim, но вы там не один. Позже, если настройки этого плагина вас перестанут устраивать, можно его удалить.

vim-surround. Помогает легко работать с парными символами (скобки или кавычки). Например, с его помощью вы можете заменить любые парные символы на другие. Допустим, в этом коде нам нужно использовать интерполяцию в строке. В Ruby принято строки без интерполяции обрамлять в одинарные кавычки, а с интерполяцией — в двойные. Vim-surround позволяет, находясь внутри блока, нажать cs ‘ ‘’. Сначала идёт символ одинарных кавычек — их нужно заменить, потом символ двойных — на них нужно заменить:

Скриншот: Skillbox Media

Замена кавычек произошла, теперь можем легко использовать интерполяцию:

Скриншот: Skillbox Media

NERDTree — плагин для работы с деревом файлов. Мы подробно рассмотрим его в следующих уроках.

vim-commentary — плагин для комментирования кода в разных языках программирования.

FZF — плагин для нечёткого поиска по проекту. Ищет не только по коду и файлам, но и по коммитам, по буферам и так далее.

vim-airline — строка статуса внизу экрана. Другие плагины любят использовать эту строку для отображения информации. Да и в целом ориентироваться по файлу с помощью этой строки становится легче.

Остальные плагины и готовые сборки для языков программирования мы обсудим на следующих уроках.

Урок 12


Работа с файлом .vimrc

.vimrc — по умолчанию основной файл, в котором хранятся все настройки вашего редактора. Как правило, в нём пишут команды Vim, которые можно вызывать в режиме командной строки. То есть, по сути, настройка Vim через .vimrc — это выполнение всех команд, которые написаны в .vimrc. Исключение составляют команды, которые относятся к конкретным плагинам, — например, vim-plug (см. предыдущий урок).

Попробуем с вами основные настройки, которые можно делать в .vimrc.

Команда : set hlsearch изменяет настройки подсветки поиска в редакторе: после её ввода любой поиск будет подсвечиваться до момента закрытия редактора. Добавим эту команду в .vimrc — и теперь эта настройка будет включаться в редакторе по умолчанию:

Скриншот: Skillbox Media

Проверяем! Закрываем редактор. Открываем заново и выполняем поиск. Работает!

Скриншот: Skillbox Media

В предыдущих уроках мы уже сетовали, что переход между окнами в Vim довольно сложный: комбинация Ctrl + w и направление. Переназначим этот переход на просто Ctrl и направление. Назначим другой набор клавиш для перехода между окнами. Как нам это сделать?

В режиме командной строки есset есть команда для перехода между окнами : wincmd. В качестве аргумента она принимает направление перехода. Воспользуемся этой командой для настройки в нашем .vimrc:

Скриншот: Skillbox Media

Для назначения клавиш в Vim существует команда map, которая принимает два аргумента: коллекция клавиш, которые надо нажать, и действие, которое нужно выполнить:

Скриншот: Skillbox Media

Вы можете назначить комбинацию клавиш отдельно для каждого режима:

  • nmap (normal mode) назначается только для командного режима;
  • imap (insert mode) — для режима ввода;
  • vmap (visual mode) — для визуального режима;
  • smap (select mode) — для режима выделения;
  • cmap (command-line mode) — для режима командной строки.

Мы хотим назначить переход между окнами только в командном режиме, поэтому вводим nmap <C-k>: wincmd k<CR>, где nmap — назначение для командного режима, а <C-k> —комбинация клавиш Ctrl + k.

Скриншот: Skillbox Media

Далее идёт команда, которая вызывается комбинацией клавиш : wincmd k<CR>. <CR> — это по умолчанию обозначение клавиши Enter. Она тут нужна, потому что после ввода команды нужно нажать Enter. Пробуем. Перезапускаем редактор. Открываем два окна. Нажимаем Ctrl + k. Работает!

Скриншот: Skillbox Media

Но мы видим, что команда : wincmd k отобразилась внизу. Это не обязательно — ведь нам не хочется, чтобы постоянно висело напоминание о переходе между окнами. Возвращаемся в .vimrc и добавляем аргумент <silent>:

Скриншот: Skillbox Media

Этот аргумент убирает вывод команды, которая исполняется в редакторе. Пробуем:

Скриншот: Skillbox Media

Переход работает, команда не отображается. Остаётся только повторить эту настройку для переходов в другие стороны.

Теперь назначим комбинацию клавиш, которая будет отвечать за сохранение. Вводим: map <F2> <Esc>: w<CR>.

Скриншот: Skillbox Media

Нажатие Esc по умолчанию будет вызывать переход в командный режим, после чего нужно будет ввести : w и нажать Enter. Делаем аналогичные назначения на закрытие без сохранения:

Скриншот: Skillbox Media

И на сохранение с закрытием:

Скриншот: Skillbox Media

Отображение номеров строк в Vim можно написать как set nu и как set number:

Скриншот: Skillbox Media

Следующая настройка, set nocompatible, отключает совместимость Vim с Vi:

Скриншот: Skillbox Media

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

Следующие настройки, filetype on и syntax on, регулируют подсветку кода в Vim:

Скриншот: Skillbox Media

Без первой из них большинство плагинов отлично справляются сами, включая специальные функции для расширений файлов. Некоторые даже требуют её отключить — например, в наших настройках Vim написано filetype off. Советуем оставить filetype on до тех пор, пока не потребуется обратное.

Вы также можете настроить подсветку строки и колонки, в которой находится курсор, с помощью set cursorline и set cursorcolumn:

Скриншот: Skillbox Media

Выглядит это так:

Скриншот: Skillbox Media

В нашем случае эти настройки не добавлены, потому что лишние линии отвлекают. Правда, для set cursorcolumn можно добавить назначение на клавишу F8, чтобы иногда проверять выравнивание форматировании кода. Это полезно, например, когда требуется найти потерявшуюся закрывающую скобку. Как именно включать и отключать настройки по клавише, мы обсудим на следующих уроках.

Команда set nowrap не будет переносить длинные строки:

Скриншот: Skillbox Media

Команда set history=1000 сохраняет историю стольких команд командной строки, сколько вы укажете:

Скриншот: Skillbox Media

По умолчанию их 20.

Следующая наша задача — установка цветовой схемы. Предлагаем скачать одну из самых популярных цветовых схем для Vim — Molokai:

Скриншот: Skillbox Media

Цветовые схемы Vim хранятся в директории ~/.vim/colors:

Скриншот: Skillbox Media

Скачаем и положим в эту папку файл цветовой схемы. В Linux это делается с помощью команды curl -o molokai.vim https://raw.githubusercontent.com/tomasr/molokai/master/colors/molokai.vim:

Скриншот: Skillbox Media

Переходим в наш файл .vimrc и задаём нашу цветовую схему. Закрываем и открываем Vim. Цветовая схема применилась. Красота!

Скриншот: Skillbox Media

Вы можете не только скачивать готовые цветовые схемы, но и изменять их, а также создавать свои. Откроем файл, который мы скачали:

Скриншот: Skillbox Media

Первые строки кода — в основном про совместимость схемы с редактором. А вот со строки 47 начинается сама цветовая схема. Как видим, здесь есть знакомые каждому программисту обозначения: Boolean, Character, Constant и так далее:

Скриншот: Skillbox Media

Поменяем, например, цвет Boolean-значений на белый. Так как у нас 256-цветный терминал, поменяем цвет именно в модуле, который отвечает за его поддержку:

Скриншот: Skillbox Media

Закрываем Vim, открываем заново Ruby-файл. Вводим Boolean-значения true и false. Они стали белыми:

Скриншот: Skillbox Media

Аналогично можно поменять всю цветовую схему на ваше усмотрение. С этим можно играться несколько часов!

Теперь настроим статус-бар. Можно сразу накатить кучу фич с помощью плагина vim-airline, но для того, чтобы понимать, как его настраивать, попробуем сперва настроить бар самостоятельно. Вводим : help statusline:

Скриншот: Skillbox Media

Разберём лишь несколько очевидных фич, которые уже реализованы в vim-airline.

Открываем .vimrc-файл. Вначале нужно очистить статуслайн. Для этого пишем строку кода set statusline=:

Скриншот: Skillbox Media

Теперь на следующей строке пишем set statusline += set statusline+=\ %F\ %R:

Скриншот: Skillbox Media

Параметр F здесь означает вывод полного адреса файла, а параметр R показывает RO, если файл имеет статус read-only. Далее добавим текущую ветку Git. Сперва нам нужно получить название текущей ветки. Создадим переменную внутри .vimrc: let gitBranch=system («git rev-parse --abbrev-ref HEAD»):

Скриншот: Skillbox Media

С помощью такой команды можно получить текущую ветку в Git-репозитории. Как таковой интерполяции в .vimrc нет, поэтому будем использовать лайфхак. Он помогает выполнить действия при отсутствии важных функций типа интерполяции.

Вводим следующую строку execute «set statusline +=». gitBranch:

Скриншот: Skillbox Media

Проверяем! Значение из переменной gitBranch добавлены в статус-бар:

Скриншот: Skillbox Media

Теперь давайте в правую часть статус-бара добавим следующие данные: set statusline+=\ Row:\ %l\ Col:\ %c\ Percent:\ %p%%:

Скриншот: Skillbox Media

Здесь %l — номер строки, %c — номер столбца, а %p выводит местонахождение курсора в процентном соотношении к размеру файла.

Впрочем, лучше действительно поставить vim-airline и использовать его. Давайте так и сделаем. Добавляем Plug 'vim-airline/vim-airline и вводим команду : PlugInstall:

Скриншот: Skillbox Media

Всё, готово! Красивый статус-бар!

Скриншот: Skillbox Media

Это все настройки, которые мы хотели вам показать в этом уроке. Но их существует ещё множество. Можно сохранять их, переносить на разные компьютеры, устанавливать заново после обновления системы. Просто сложите нужные файлы в нужные места и перезагрузите редактор! Не во всех современные IDE есть такая возможность.

Также советуем создать собственный репозиторий для настройки рабочего окружения. Такие репозитории (их ещё называют dotfiles) обычно имеют одну команду для установки всего, что нужно, на свежую ОС. Например, у автора этого курса есть собственный репозиторий dotfiles, в котором сохранены все нужные настройки Vim. Хранятся они в файле .vimrc.

Советуем сразу добавлять в глобальный файл .gitignore файлы с расширением .swp и .swn. Это типы файлов, которые Vim создаёт, когда вы редактируете другие файлы. Чтобы случайно не закоммитить их в репозиторий, лучше сразу сделать глобальную настройку на всю систему.

Добавлять эти файлы в настройки конкретного репозитория — очень плохой тон: не факт, что в вашем проекте все будут использовать Vim. Такие настройки должны быть настроены у каждого лично.

Урок 13


Плагин NERDTree

NERDTree — самый популярный плагин для просмотра дерева файлов в проекте и управления им. Разберём, как им пользоваться.

Устанавливаем плагин с помощью vim-plug (это займёт секунд пять):

Скриншот: Skillbox Media

Перезагружаем редактор:

Скриншот: Skillbox Media

Чтобы открыть окно с деревом файлов, вводим команду : NERDTree:

Скриншот: Skillbox Media

Вы можете забиндить её на любую комбинацию клавиш. Более того, существует команда : NERDTreeToggle, которая откроет NERDTree, если он закрыт, и закроет, если открыт. У нас эта команда находится на комбинации Ctrl + f:

Скриншот: Skillbox Media

По умолчанию NERDTree считает корневой директорией ту, откуда запустили vim. Папки и файлы открываются нажатием на клавишу о. По умолчанию файлы откроются в окне справа, а папки развернутся. Если хотите открыть файл в новом окне, нажмите i:

Скриншот: Skillbox Media

Те же правила работают при нажатии клавиши s, только разделение окон будет вертикальным. Комбинация Shift + i показывает скрытые файлы:

Скриншот: Skillbox Media

Повторное нажатие снова их скроет. Добавление файла или папки делается следующим образом: перейдите в директорию, в которой хотите их создать, нажмите ma. Вводите название файла. Если в конце названия поставить слеш, будет создана папка:

Скриншот: Skillbox Media

Если вы хотите создать файл в папке, которой не существует, вводите полный адрес файла, и папки будут созданы автоматически.

Чтобы изменить название или адрес файла, вводим mm и новое название:

Скриншот: Skillbox Media

Для копирования вводим mc и новое название:

Скриншот: Skillbox Media

Для удаления файла вводим md и подтверждаем нажатием на Enter или y:

Скриншот: Skillbox Media

Важное отличие NERDTree от большинства деревьев файлов, к которым мы привыкли, — оно не обновляется автоматически. Если у вас появился или удалился файл или обновилось его имя, нужно нажать Shift + r, чтобы файлы обновились:

Скриншот: Skillbox Media

Вот и все основные фичи этого плагина. В следующем уроке мы поговорим о плагинах для языков программирования.

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована