30 дней с Neovim

После 5 лет использования VSCode я решил перейти на Neovim. Вот мой опыт, конфиги и полезные советы.

1 Установка и базовый конфиг

Установка на Arch Linux:

sudo pacman -S neovim

Базовый конфиг ~/.config/nvim/init.vim:

" Настройки
set number
set relativenumber
set tabstop=4
set shiftwidth=4
set expandtab
set smartindent
set mouse=a

" Клавиши
nnoremap <space> :
let mapleader = " "

" Плагины (будем устанавливать позже)
call plug#begin('~/.vim/plugged')
call plug#end()

3 Установка менеджера плагинов

Я выбрал vim-plug. Установка:

sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
       https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'

После установки запустите :PlugInstall в Neovim.

7 Мои must-have плагины

nvim-treesitter

Улучшенное выделение синтаксиса

telescope.nvim

Файловый поиск и многое другое

lualine.nvim

Красивая статусная строка

nvim-cmp

Автодополнение кода

nvim-lspconfig

Интеграция с LSP

gitsigns.nvim

Интеграция с Git

10 Настройка LSP

Для Python разработки:

" LSP config
lua << EOF
require'lspconfig'.pyright.setup{}
EOF

" Автодополнение
autocmd BufEnter * lua require'cmp'.setup.buffer { sources = { { name = 'nvim_lsp' } } }

Установите серверы LSP:

npm install -g pyright
sudo pacman -S python-lsp-server

15 Полезные keybindings

" Перемещение между окнами
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

" Поиск файлов с Telescope
nnoremap <leader>ff <cmd>Telescope find_files<cr>
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
nnoremap <leader>fb <cmd>Telescope buffers<cr>
nnoremap <leader>fh <cmd>Telescope help_tags<cr>

" Git
nnoremap <leader>gs <cmd>Gitsigns stage_hunk<cr>
nnoremap <leader>gr <cmd>Gitsigns reset_hunk<cr>

20 Настройка внешнего вида

Моя тема - gruvbox. Установка:

Plug 'morhetz/gruvbox'

" В init.vim
colorscheme gruvbox
set background=dark

Конфиг lualine:

lua << EOF
require('lualine').setup {
  options = {
    theme = 'gruvbox',
    section_separators = { left = '', right = '' },
    component_separators = { left = '', right = '' }
  }
}
EOF

30 Итоги

Плюсы:

  • Невероятная скорость работы
  • Полный контроль над редактором
  • Минимальное потребление ресурсов
  • Работает везде (даже по SSH)

Минусы:

  • Крутая кривая обучения
  • Требуется время на настройку
  • Нет встроенной интеграции с некоторыми инструментами

Вывод: Neovim стал моим основным редактором. Для больших проектов иногда возвращаюсь к VSCode, но 90% работы теперь делаю в Neovim.

Мой текущий конфиг

Полный конфиг доступен на GitHub: Конфиг

Назад к блогу