
Neovim – конфигурация редактора: базовая настройка
Обновлено 23.02.2024
Приветствую!
Сегодня начнем настраивать наш консольный редактор Neovim под свои предпочтения. Заметка будет небольшая)
Присоединяйтесь к нашему каналу: t.me/r4ven_me и чату: t.me/r4ven_me_chat в Telegram .
Neovim – является эволюционным развитием классического редактора Vim. Чтобы понимать, что это за Vim такой и зачем он нужен – прочтите мою предыдущую статью: VIM — Консольный редактор: знакомство. В этой статье я постарался ввести читателей в курс дела: вкратце рассказал про сам редактор, про его режимы работы, а также привел часто используемые горячие клавиши-команды.
Ну а сегодня мы выполним начальную настройку редактора Neovim. Отмечу, что конфигурация из данной статьи также справедлива и для Vim, за исключением некоторых нюансов.
Сильно больно не будет, поэтому прошу под кат)
Предисловие
Выполнять конфигурацию Neovim можно двумя способами:
- классический – с помощью встроенного языка vimscript;
- расширенный – с помощью языка программирования Lua через механизм API.
Для большей совместимости с классическим Vim я буду производить конфигурацию с помощью первого варианта. Но не исключена возможность в будущем перейти на Lua)
Как обычно, все действия в статье будут проводиться в среде Linux Mint, а именно в версии 21. Все статьи связанные с этим дистрибутивом можно найти по соответствующему тегу.
Если Neovim еще у вас не установлен, то давайте это исправим)
Установка Neovim в Linux Mint
Открываем терминал и выполняем команду:
sudo apt update && sudo apt install -y neovim
Если кому интересно оформление терминала – то используется цветовая схема Nord. Про настройку я рассказывал в статье: Кастомизация Linux Mint 20/21 + Nord theme.
Для работы в терминале используется настроенная оболочка Zsh – о настройке которой есть отдельная статья: ZSH — Интерактивная командная оболочка для Linux + Oh-My-Zsh.
Базовая конфигурация Vim/Neovim
Для Neovim создаём папку конфигурации и открываем файл на редактирование:
mkdir ~/.config/nvim
nvim ~/.config/nvim/init.vim
Для классического Vim такая команда:
vim ~/.vimrc
Символом открытых двойных кавычек
"
в vimscript обозначаются комментарии. Это гипер не удобно, и вроде как в последних версиях Neovim можно использовать решетку#
, но для совместимости оставим дефолт.
И добавляем следующее содержимое:
" By r4ven_me
" ############################
" ###### BASIC SETTINGS ######
" ############################
set mouse=a " Enable mouse support
set encoding=utf-8 " Set character encoding to UTF-8
set number " Display line numbers
set scrolloff=7 " Keep at least 7 lines visible above/below cursor
"set noshowmode " Disable mode display
set cursorline " Highlight the current line
set ignorecase " Enable case-insensitive searching
set smartcase " Use smart case for searching
set laststatus=2 " Always show status line
set tabstop=4 " Set tab width to 4 spaces
set softtabstop=4 " Set soft tabstop to 4 spaces
set shiftwidth=4 " Set indentation width to 4 spaces
set expandtab " Use spaces instead of tabs for indentation
set autoindent " Enable automatic indentation
set fileformat=unix " Set file format to Unix (LF line endings)
"set showtabline=2 " Always show tabline
set clipboard=unnamedplus " Use system clipboard
"set termguicolors " Enable true color support
set splitbelow " Split new windows below the current one
set splitright " Split new windows to the right of the current one
set equalalways " Keep window sizes equal
set sessionoptions-=blank " Don't save blank windows in sessions
filetype indent on " Disable automatic indentation for specific filetypes
Как видно, напротив каждого пункта я оставил комментарии на английском (для универсальности).
Для того чтобы изменения применились, достаточно сохранить файл и перезайти в редактор:
:wq
nvim ~/.config/nvim/init.vim
Дадим описание каждому параметру на русском)
И так:
Параметр | Описание |
---|---|
set mouse=a | Включает использование мыши в редакторе. |
set encoding=utf-8 | Устанавливаем кодировку для новых файлов в UTF-8. |
set number | Включает отображение номеров строк. |
set scrolloff=7 | Устанавливает количество строк, отображаемых после курсора при прокрутке файла. |
"set noshowmode | Отключает отображение статуса текущего режима редактора (оставьте этот параметр закоменченным, он понадобиться нам в будущем при настройке плагина statusline). |
set cursorline | Включает подсветку текущей строки. |
set ignorecase | Отключает чувствительность к регистру при поиске через / и ? . |
set smartcase | С этим параметром, поиск будет без учета регистра, если запрос содержит только символы в нижнем регистре. Однако, если запрос содержит хотя бы одну заглавную букву, поиск будет чувствительным к регистру. |
set laststatus=2 | Включает отображение строки статуса в нижней части окна. |
set tabstop=4 | Устанавливает длину отступа при нажатии Tab в 4 пробела. |
set softtabstop=4 | Определяет количество пробелов, которое будет вставлено, при нажатии Tab , или когда происходит автоматическое отступление. Он называется “soft” потому, что не изменяет фактический текст, а только визуально выставляет отступы. |
set shiftwidth=4 | Определяет количество пробелов, вставляемых при добавлении автоотступов. |
set expandtab | Заменяет символ табуляции (установлен по умолчанию) на пробелы. |
set autoindent | Включает автоотступы при переходе на новую строку. |
set fileformat=unix | Задаёт формат для новых файлов. Данные форматы отличаются в основном обработкой символа перевода строки. Подробнее про форматы можно почитать например, вот тут. |
“set showtabline=2 | Включает постоянное отображение строки с вкладками, даже если открыто одно окно (этот параметр нам также будет полезен при настройке плагинов в будущем). |
set clipboard=unnamedplus | Активирует использование внешнего буфера обмена (с этим параметром в классическом vim может наблюдаться некорректная работа, в neovim все хорошо). |
"set termguicolors | Включает поддержку true color для терминала. Этот параметр можно также оставить закоменченым. Он понадобится в будущем при настройке цветовой темы для Neovim. |
set splitbelow | Указывает редактору при горизонтальном разделении окна командой :split открывать новое окно внизу (по умолчанию сверху). |
set splitright | Указывает редактору при вертикальном разделении окна командой :vsplit открывать новое окно справа (по умолчанию слева). |
set equalalways | При включении данного параметра редактор будет пытаться автоматически поддерживать одинаковую ширину вертикальных окон при их открытии. |
set sessionoptions-=blank | Удаляет опцию “blank” из параметров сессии. Отключает сохранение/восстановление пустых окон при работе с файлами сессий. |
filetype indent on | Включает автоматические отступы в зависимости от типа файла. |
Все указанные выше параметры можно временно активировать/деактивировать и вручную во время работы в редакторе. Для активации нужно в режиме командной строки (вызывается клавишей двоеточия :
т.е. Shift + ;
) просто ввести указанные выше параметры. Например, чтобы включить отображение номеров строк:
:set number
А для деактивации:
:set nonumber
# или
:set number!
Такой синтаксис справедлив для многих параметров. Чтобы отключить, нужно добавить префикс no
либо суффикс !
перед/после нужным параметром.
Послесловие
Это была первая часть базовой конфигурации Neovim. Как видно, даже при настройке такого небольшого списка, можно понять, насколько гибкие настройки предлагает редактор.
В следующей статье мы поговорим про настройку swap и бэкап файлов для обеспечения безопасности при работе с файлами в случае отключения питания или проблем с записью на диск и пр. Не пропустите.
Спасибо, что читаете. Успехов в изучении Vim/Neovim.
Полезные источники
Прочие мои статьи: