Моя конфигурация Neovim


Настройка линтеров, подсветки синтаксиса, NerdTrees и многого другого

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

Почему люди используют Vim в 2022 году?

Существует убедительная причина, по которой Vim остается актуальным для большинства разработчиков на протяжении почти полувека. Среди разработчиков функциональность, которую предлагает Vim для редактирования нескольких файлов несколькими нажатиями клавиш, просто не имеет себе равных. Возможность продвигаться вперед и изучать возможные решения со скоростью мысли имеет решающее значение для разработчиков, работающих со средними и большими кодовыми базами. Именно по этой причине я начал работать с Vim. Кривая обучения довольно крутая. Мне понадобилась неделя, чтобы освоиться с нажатием клавиш, но это вполне окупается. (Я нашел эту шпаргалку полезной: https://vim.rtorr.com/.)

Наблюдая за тем, как более опытные разработчики, такие как ThePrimeagen, Джордж Хотц и Джейсон Тернер, плавно перемещаются по нескольким файлам, переделывая свой дизайн и тестируя свой код, я захотел включить Vim в свой личный рабочий процесс. Это позволило мне больше сосредоточиться на коде вместо того, чтобы тратить слишком много времени на всплывающие окна в редакторе GUI.

Хотя я не всегда пишу на Vim (и Neovim), текстовые редакторы и IDE предлагают привязки клавиш Vim. Это минимизирует задержки, которые вы тратите на нажатие клавиш в графическом интерфейсе. Суть в том, что независимо от того, куда вы идете в своем пути разработчика, вам стоит попробовать Vim.

Vim и Neovim

Neovim — это результат усилий сообщества Vim по поддержке лучшего скриптинга с помощью Lua, современных плагинов и интеграции с современными графическими интерфейсами (Wikipedia Contributors, 2022). Проект Neovim стартовал в 2014 году, его основной фокус дизайна был направлен на расширяемость и ремонтопригодность Vim.

Большинство команд и конфигураций Vim работают в Neovim по умолчанию, поскольку проект Neovim является форком и более функциональной версией Vim.

Название этого раздела естественно наталкивает на мысль о том, что лучше, но я оставляю это на ваше усмотрение, чтобы решить, что лучше для вас. Лично я нахожу Neovim более дружелюбным, поскольку завершение кода и статический анализатор проще в настройке.

Конфигурирование Neovim

Все конфигурации для Neovim хранятся в каталоге ~/.config/nvim. Но в отличие от Vim, который доступен в большинстве дистрибутивов Linux, вы должны убедиться, что у вас есть Neovim, запустив nvim -v. Если он не выведет версию, вам придется установить его, используя $ sudo apt install neovim. (Я использую Ubuntu, в вашем дистрибутиве может быть другой менеджер пакетов для установки Neovim).

Далее нам нужно установить Git и Curl, чтобы настроить Vim Plug, который позволяет устанавливать плагины Vim. Но сначала давайте убедимся, что у нас все в порядке.

$ sudo apt update
$ sudo apt install git curl
Войдите в полноэкранный режим Выход из полноэкранного режима

Чтобы установить Vim Plug, выполните команду shell для Linux:

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'
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь переходим в каталог ~/.config/nvim. Если этого каталога нет, создайте его с помощью команды cd ~/ && mkdir .config/nvim. Мы помещаем все наши пользовательские конфигурации в файл ~/.config/nvim/init.vim.

Не паникуйте, если откроется пустой экран. Первые клавиши, которые вы должны знать для редактирования файлов в Vim, это:

:set number " show line numbers
:set relativenumber " show line number on the current line relative to other lines
:set autoindent " sets newline to inherit the indentation of prev lines
:set tabstop=4 " indents using 4 spaces
:set shiftwidth=4 " sets 4 spaces indents when shifting
:set smarttab " sets `tabstop` number of spaces when the tab is pressed
:set softtabstop=4 " sets 4 spaces when tab or backspace is pressed
:set mouse=a " enables the mouse for scrolling and resize 
Войти в полноэкранный режим Выйти из полноэкранного режима

Вы можете расширить эту начальную конфигурацию по своему усмотрению, смотрите: https://www.shortcutfoo.com/blog/top-50-vim-configuration-options/. Если вы удовлетворены, сохраните и выйдите.

Теперь о настройке плагинов. Ваши плагины Vim объявляются между call plug#being() и call plug#end(). Внутри мы размещаем набор команд Plug [URL плагина]. И когда мы удовлетворены, нажимаем [esc] + :PlugInstall.

Чтобы включить панель тегов для моей конфигурации, используйте:

$ sudo apt install exuberant-ctags
Войти в полноэкранный режим Выйти из полноэкранного режима

Мои личные плагины для Vim следующие:

call plug#begin('~/.config/nvim/plugged')

Plug 'http://github.com/tpope/vim-surround' " Surrounding ysw)
Plug 'https://github.com/preservim/nerdtree' " NerdTree
Plug 'https://github.com/tpope/vim-commentary' " For Commenting gcc & gc
Plug 'https://github.com/vim-airline/vim-airline' " Status bar
Plug 'https://github.com/ap/vim-css-color' " CSS Color Preview
Plug 'https://github.com/rafi/awesome-vim-colorschemes' " Retro Scheme
Plug 'https://github.com/ryanoasis/vim-devicons' " Developer Icons
Plug 'https://github.com/tc50cal/vim-terminal' " Vim Terminal
Plug 'https://github.com/preservim/tagbar' " Tagbar for code navigation
Plug 'https://github.com/terryma/vim-multiple-cursors' " CTRL + N for multiple cursors

call plug#end()

nnoremap <C-f> :NERDTreeFocus<CR>
nnoremap <C-n> :NERDTree<CR>
nnoremap <C-t> :NERDTreeToggle<CR>

nmap <F8> :TagbarToggle<CR>

let g:NERDTreeDirArrowExpandable="+"
let g:NERDTreeDirArrowCollapsible="~"
Войти в полноэкранный режим Выйти из полноэкранного режима

NerdTree обеспечивает графическое представление дерева файлов:

Для языкового сервера, инструментов завершения кода и статического анализа мы используем плагин coc.vim. Для этого требуется NodeJS версии 14+ и менеджер пакетов NPM.

$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt-get install -y nodejs && sudo apt install npm
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь, когда у нас есть необходимое условие для coc.nvim, откройте init.vim и добавьте следующее

call plug#begin()
...
Plug 'https://github.com/neoclide/coc.nvim'  " Auto Completion
...
call plug#end()

nnoremap <C-l> :call CocActionAsync('jumpDefinition')<CR>
Войти в полноэкранный режим Выйти из полноэкранного режима

Перейдите в каталог ~/.config/nvim/plugged/coc.nvim и постройте yarn с помощью следующих команд:

$ sudo npm install -g yarn
$ yarn install 
$ yarn build 
Войти в полноэкранный режим Выйти из полноэкранного режима

Пример CocInstall

Чтобы иметь возможность настраивать линтеры, мы должны установить различные модули для разных языков, на которых мы работаем. Для этого примера мы установим Python3. (Убедитесь, что Python3 и Pip3 установлены).

Установите инструмент статического анализа для Python (Jedi — один из примеров, но есть и другие):

pip3 install jedi
Войдите в полноэкранный режим Выйти из полноэкранного режима

Внутри нашего файла типа Python: [esc] + :CocInstall coc-python . Вот и все!


Спасибо, что дошли до этого, и наслаждайтесь изучением инструментов в вашем терминале!


Ссылки

  1. Участники Википедии. (2022, 26 августа). Vim (текстовый редактор). В Википедии, Свободной энциклопедии. Retrieved 14:12, September 1, 2022, from https://en.wikipedia.org/w/index.php?title=Vim_(text_editor)&oldid=1106761239.

  2. Choi, J. (2022). Vim-Plug. https://github.com/junegunn/vim-plug.

Оцените статью
devanswers.ru
Добавить комментарий