Информации про данный редактор уже ну очень много. Ранее, я уже писал, что решил освоиться с ним. Теперь, хочу поделиться этим с вами. Стандартная история.
Получится либо длинно-длинно-пост, либо несколько статей для разных этапов подготовки и использования.
Зачем он мне вообще
Довольно логичный вопрос. И правда, зачем? Мой любимый Sublime Text отлично справляется с возложенными на него задачам. К чему этот монструозный VI/VIM/NVIM? Из него выйти-то проблема, а уж работать - мука одна.
Да, поначалу сложно. Но ведь и это инструмент для профессионалов. И есть несколько поводов его использовать:
- Он быстрый и легковесный: лично для меня это не было определяющим фактором долгое время, пока не появились файлы в работе по нескольку тысяч строк; привычный редактор начинает притормаживать, увы;
- Он свободный: это говорит само за себя;
- У него море плагинов на все случаи жизни: кое-что из них я буду устанавливать и объяснять, зачем они нужны;
- Он - глубоко настраиваемый: можно создать свой собственный набор правил использования через настройки и плагины (это, конечно, не то, чтобы прямо редкость в мире редакторов кода, но всё же);
- С ним можно работать прямо на удалённой или виртуальной машине: это для меня прямо очень интересно, т.к. большую часть разработки мне приходится проводить именно на виртуалке (такая особенность работы), а получать доступ к коду через Samba хоть и возможно, имеет ряд некоторых недостатков (незначительных, но всё же);
- Я разрабатываю в Linux среде - NVIM для неё и создавался;
- Его сложнее освоить, но пользоваться удобней - инструмент для профессионалов (это, пожалуй, важный для меня довод).
Разумеется, есть у данного редактора и большой набор минусов, большинство которых сводится к тому, что пользоваться им непривычно и надо держать в голове ну очень много сочетаний клавиш. В принципе, вопрос привычки. После того, как освоишься - всё дальше идёт легко.
Предусловия
Думаю, я не готов рассказывать всё, от азов и далее. Там довольно много всего надо освоить, поэтому я буду писать уже непосредственно о настройке и использовании. Поэтому, изначально я предполагаю, что:
- Вы уже знакомы с VI/VIM/NVIM и сможете из него, хотя бы, выйти (https://vimhelp.org/quickref.txt.html в помощь);
- Такой редактор настраивается через файл настройки; это можно сделать также командами из редактора;
- Способны поискать справку тут: https://neovim.io/doc/user/starting.html и разобраться с тем, как написать файл настройки;
- Часть функционала - устанавливается через плагины; для этого требуется, как ни странно, плагин-менеджер.
Немного про настройку
NVIM имеет 2 известных мне места настройки: конфигурационный файл и внутри приложения (можно менять нужные настройки). Вот что хорошо бы иметь в виду:
- ~/.config/nvim -> папка для хранения файлов настройки;
- init.vim - главный файл настройки; часть настроек можно вынести в другие файлы и импортировать;
- настройка "filetype plugin on" позволяет делать этот импорт;
- часть настроек может быть написана на lua, для этого требуется только специальная разметка для импорта;
- .local/nvim - тут установленные плагины.
Менеджер плагинов
Их несколько, я взял первый попавшийся - вот этот: https://github.com/junegunn/vim-plug; как его установить и использовать - данные по ссылке. Используется так: https://github.com/junegunn/vim-plug/wiki/tutorial, но не лишним будет знать про управление следующее:
- Удалить или закоментировать Plug команды для отключения ненужных плагинов;
- Перезагрузка плагинов (:source ~/.vimrc) или перезапустить Vim;
- Выполнить :PlugClean - определние и удаление неиспользуемых плагинов.
Хо-хо, я ещё не начал ничего, а уже море входных данных, которые неплохо бы понимать и освоить. И это я ещё к сути не перешёл. Ну да ладно, начнём-с.
Общие сведения, которые надо бы знать
NVIM - текстовый редактор. Лёгковесный, непривычный, но текстовый. Так что он создавался именно для обработки текста и под это заточен.
Прежде я привык пользоваться 2 сущностями при работе с проектом:
- Набор файлов и папок проекта (среда), обычно расположенные слева в специальной панели;
- Вкладки, содержащие открытые на редактирование файлы.
Тут всё не совсем так. Нет, правильнее сказать совсем не так. Хотя общие черты сохраняются.
У NVIM есть 3 сущности для работы с документами:
- Буфер - редактируемый файл; он может отображаться или не отображаться, либо перемещаться между окнами. Список буферов можно просмотреть, переключаться между ними, менять его.
- Окно - часть визуального интерфейса. Это непосредственно окно редактирования. На экране может быть одно или несколько. Можно открыть один и тот же буфер в разных окнах (например, начало и конец документа) и редактировать их одновременно.
- Вкладка - но не та вкладка, к которой мы привыкли. Это, скорее, как проект внутри проекта; новый набор открытых окон и буферов (хотя про буферы это не точно). Например, параллельно можно держать 2 вкладки, одна с фронтендом, вторая - с бэкендом. Переключение между вкладками позволяет независимо редактировать код, технически, расположенный в одной папке.
Такой подход несколько непривычен, т.к. отличается от привычного. Но, что есть, то есть. Освоимся. Пока просто запомните это, пригодится потом.
Пока, наверное, хватит. Запустим NVIM (наберём, как ни удивительно, в командной строке nvim), посмотрим, как он выглядит, и продолжим в другой статье.
Да, раз уж я упомянул настроечный файл - дам минимальный набор установок, которые туда надо добавить сразу (init.vim):
" При поиске текста большие буквы равны маленьким буквам
set ignorecase
" Возможность удаления спецсимволов
set backspace=indent,eol,start
" автоотсутп
set autoindent
" длина истории команд
set history=50
" на нажатию кнопки tab при вводе команды - будет предлагаться набор подходящих команд
set showcmd
" подсвечивать подходящий шаблон в тексте по мере его ввода
set incsearch
" кодировка для ввода, например, при поиске текста
set encoding=utf-8
" кодировка при работе с файлами
set fileencoding=utf-8
" отображать номера строк (1..N)
set number
" Разрешить импорт файлов настройки
filetype plugin on
Кстати, все команды, начинающиеся с `set` могут быть введены непосредственно в командной строке редактора. Продолжение - тут.