Код
#статьи

Курс по Vim. Часть 5. Autocomplete, ещё о .vimrc и немного о Neovim

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

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

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

Автор курса

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

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

Мы наконец дошли до трёх последних уроков. Разберём, для чего нужен autocomplete, более подробно изучим .vimrc и расскажем о Neovim.

Урок 14


Настройка autocomplete

Автокомплит — это автоматическое завершение слова, которое вы печатаете. Очень полезная фича в программировании, да и в любом наборе текста, хотя и не все любят ей пользоваться.

Самым мощным инструментом для этого многие считают плагин YouCompleteMe. К сожалению, у автора отношения с ним не сложились: как-то раз удалось его завести для Ruby, но потом он отвалился, и больше восстанавливать его не стали. Хотя для других языков программирования он работает отлично.

Впрочем, есть и стандартный автокомплит Vim:

Скриншот: Skillbox Media

Рассмотрим способы его настройки. Чтобы посмотреть варианты возможного автокомплита, при вводе нажмите Ctrl + n и перемещайтесь по списку:

Скриншот: Skillbox Media

С помощью клавиши Enter можно выбрать понравившийся вариант, клавиша Esc закрывает автокомплит.

Словарь автодополнения Vim можно обновлять по своему усмотрению. Для этого создаём директорию complete в директории ~/.vim. В ней создаём файл skillbox.vim:

Скриншот: Skillbox Media

Туда добавляем слова skillbox и vim_da_best:

Скриншот: Skillbox Media

Далее открываем vimrc-файл и там пишем вот такой код:

Скриншот: Skillbox Media

Как можно догадаться, этот код подгружает в автокомплит словарь слова из нашего нового файла, если тип файла Ruby. Откроем Ruby-файл. Начинаем вводить sk и нажимаем Ctrl + n:

Скриншот: Skillbox Media

Как видим, редактор предлагает нам автозавершение skillbox. Это работает и vim_da_best тоже.

Естественно, если вы не хотите устанавливать плагины для автокомлита, вы можете скачать подходящие словари для языков программирования, можете сделать словарь для конкретного проекта. Как и во всём в Vim, у вас развязаны руки!

Также по умолчанию автокомплит, если вы ему не укажете словарей, будет предлагать подходящие слова из тех, что появились в буфере за время работы редактора. Для организации более умного автокомплита вам всё-таки понадобится поработать с плагинами YouCompleteMe или DeoComplete. Последний, кстати, скоро заменят на плагин DCC. Внимательно читайте Readme.

Это была краткая инструкция по работе автокомплита в Ruby. Как и всё в Vim, он настраивается настолько глубоко, насколько это нужно пользователю.

Урок 15


Ещё о .vimrc

Скриншот: Skillbox Media

Ещё раз пробежимся по .vimrc. Большинство команд и настроек оттуда мы уже обсуждали; рассмотрим на конкретных примерах, где и почему их применяет автор. Откроем файл — его можно найти по адресу, указанному на картинке. Рассмотрим его построчно:

Скриншот: Skillbox Media

Команда set nu, как мы помним, показывает номера строк.

set expandtab — интересная настройка, которая при нажатии на Tab вставляет то количество пробелов, которое вам нужно. Помните известную сцену из сериала «Силиконовая долина» про проблему табов и пробелов: мол, пробелы нужно нажимать многократно, а табы — лишь однажды или дважды, зато чужие настройки табуляции влияют на отображение кода. Как раз эта проблема и решена здесь! Нажимаешь Tab один раз, появляются два пробела:

Скриншот: Skillbox Media

И никакая настройка табуляции не повлияет на отображение кода. Магия!!!

set sw=2 — это количество пробелов в одном табе.

set sts=2 — эта настройка нужна для того, чтобы удалять в выравнивании одним нажатием Backspace сразу два пробела.

set nocompatible — выключение совместимости с редактором Vi.

filetype off — мы уже обсуждали, почему эту настройку иногда лучше отключить.

Следующие четыре строчки нужны для лучшей работы vim-plug под Linux:

Скриншот: Skillbox Media

Далее идёт список плагинов, о многих мы с вами уже говорили:

Скриншот: Skillbox Media
  • syntax enable — включение подсветки синтаксиса;
  • filetype plugin indent on — включение работы с типами файлов от плагинов;
  • сохранение файла на F2;
  • выход без сохранения на F3;
  • сохранить и выйти на F4;
  • F5 — убрать подсветку результатов поиска. Полезная фича, сперва посмотреть все вхождения слова в файл, а потом выключить подсветку;
  • на F7 мы задали сложную замену старого типа хеширования в Ruby на новый;
  • на F8 — включение и выключение подсветки колонки. Очень помогает, когда нужно найти потерявшуюся закрывающую скобку или end. Обратите внимание, что, если к некоторым настройкам по set добавить в конец !, они будут включаться, если выключены, и выключаться, если включены;
  • на F9 — вызов утилиты превращения HTML-кода в Haml;
  • set relativenumber — мы с вами обсуждали, зачем это нужно;
  • map <C-p>: NERDTreeToggle<CR> — назначение клавиш Ctrl + p на открытие NERD Tree.

Далее идут назначения клавиш на быстрые переходы между окнами.

Следующий блок — довольно интересный:

Скриншот: Skillbox Media

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

au BufRead,BufNewFile *.thor set syntax=ruby

au BufRead,BufNewFile *.simplecov set syntax=ruby

au BufRead,BufNewFile *.es6 set filetype=javascript

au BufRead,BufNewFile *.vue set filetype=javascript

au BufRead,BufNewFile *.vue set syntax=javascript

au BufRead,BufNewFile *.go set tabstop=2

au BufRead,BufNewFile Makefile set tabstop=2

au BufRead,BufNewFile Dockerfile* set syntax=dockerfile

au BufRead,BufNewFile .eslintrc set syntax=json

au BufRead,BufNewFile *.tsx set syntax=typescript

autocmd FileType vue noremap <buffer> <C-f>: %! vue-formatter<CR> — отдельная настройка, чтобы удобно было форматировать Vue-файлы с фактически HTML-кодом внутри;

set hlsearch — подсветка поиска;

colorscheme molokai — назначение цветовой схемы.

А эти строки отвечают за добавление собственного словаря автокомплита для Ruby:

if has ("autocmd")

autocmd FileType ruby set complete+=k/home/pavel/.vim/complete/custom.vim

endif " has("autocmd")

Урок 16


Немного про Neovim

Neovim, или Nvim, — самый перспективный и уже занявший достойное место форк Vim.

Новая версия редактора лишена многих проблем. Рассмотрим их вкратце.

Кодовая база Vim устарела

Код оригинального Vim сложно поддерживать, поэтому редактор перестал развиваться. Neovim имеет более чистую кодовую базу, и его ядро поддерживает много разработчиков.

Если вы зайдёте в репозитории Vim и Neovim и откроете коммиты, то увидите, что Vim до сих пор поддерживает лично его создатель Брэм Моленар. А в Neovim коммитит большое сообщество.

Писать скрипты для Neovim легче, чем для Vim

Neovim поддерживает язык программирования Lua, а скрипты для Vim нужно писать на менее популярном Vimscript. Программистам приходилось изучать его дополнительно, притом что он не так-то прост. Это ограничивало разработку плагинов.

А Lua ежедневно пользуются десятки тысяч людей для других задач, и поэтому Neovim более перспективный. Да, в последние годы Vim-плагины пишут на Python, но его среда исполнения порой замедляет некоторые процессы в работе плагинов. Так что это не самое лучшее решение.

Neovim интегрируется с Tree-sitter

Tree-sitter — это парсер для построения синтаксических деревьев по коду. Благодаря такой интеграции Neovim может гораздо быстрее делать подсветку синтаксиса, автодополнение и выполнять вспомогательные функции плагинов, которые также берут информацию от Tree-sitter.

Практически все функции и возможности, которые мы с вами рассматривали в этом курсе, доступны также и в Neovim. Поэтому советуем начать знакомство с миром Vim именно через Neovim, у которого очень большое будущее. Скорее всего, он станет той же реинкарнацией редактора, какой когда-то был Vim для Vi.

Хотя это дело вкуса. Выбирайте редакторы, которые нравятся именно вам, приносят радость в работе и мотивируют программировать всё больше. Так вы станете лучшими специалистами. А крутые специалисты меняют этот мир к лучшему. И не забывайте: Esc :qa! Enter.

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

Курсы за 2990 0 р.

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

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

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