Vim: Руководство для начинающих от новичка

Vim, один из старейших участников войны текстовых редакторов, с момента его выпуска в 1991 году. Он был другом для многих и врагом для многих, хотите узнать, чем он будет для вас? Тогда давайте попробуем!

Я использую Vim уже около полутора месяцев, и он мне очень нравится (правда, первая неделя была немного болезненной).

В этой статье я расскажу о том, почему стоит использовать Vim, как его настроить и о некоторых основах Vim.

Почему стоит использовать Vim?

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

  • Полностью настраиваемый — Это означает, что у вас есть полный контроль, некоторые люди даже делают его похожим на vscode (мне лично нравится, чтобы он был минимальным).
  • Производительность — Ну, в начале ваша производительность будет снижаться, но когда вы начнете привыкать к Vim и его связкам клавиш, она точно возрастет.
  • Управляется клавиатурой (вы можете использовать мышь, если установите предпочтения) — Это может быть или не быть хорошим для вас.
  • Выглядит круто

Neovim

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

Установка

Mac & Linux

Для машин Mac & Linux выполните одно из следующих действий в зависимости от вашего менеджера пакетов:

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

или

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

Vim (не Neovim) установлен по умолчанию на большинстве машин Linux. Вы можете запустить его, набрав vi или vim.

На всякий случай, если вы открыли его прямо сейчас, не зная привязки клавиш, и теперь пугаетесь, просто наберите :q! и нажмите enter для выхода.

Windows

Для пользователей Windows у вас есть два варианта:

  1. Вы можете использовать wsl (подсистема Windows для Linux) и выполнить те же шаги, что и для Linux-систем. Я не буду здесь подробно описывать установку wsl.
  2. Использовать Powershell (не Windows Powershell), вы можете загрузить его из магазина Microsoft, и установить Neovim с помощью scoop (менеджер пакетов для windows):

Чтобы установить scoop, введите в терминале следующее:

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

winget — еще один менеджер пакетов, который сегодня предустановлен в windows.

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

Если он предложит вам установить дополнительные buckets, сделайте это.

Закройте и снова откройте терминал, и вы сможете открыть Neovim, набрав nvim.

На всякий случай, если вы открыли его прямо сейчас, не зная привязки клавиш, и теперь пугаетесь, просто наберите :q! и нажмите enter для выхода.

Первый взгляд

Вот как это выглядит сейчас:

Сейчас это выглядит не очень хорошо, не так ли?

Давайте настроим его!

Конфигурация

Сейчас существует много хороших готовых конфигураций neovim, таких как NvChad и AstroNvim, но я советую вам сначала хотя бы попробовать свою собственную конфигурацию. Лично я не использую готовые конфигурации, я предпочитаю использовать свою собственную конфигурацию.

Сначала вам придется создать конфигурационный файл для neovim.

Для пользователей Linux и Mac файл конфигурации должен быть создан по адресу ~/.config/nvim.

Для пользователей Windows файл конфигурации должен быть создан по адресу ~/AppData/Local/nvim.

(В приведенном выше тексте ~ означает домашний каталог).

Откройте терминал в соответствующих директориях. Создайте файл, его имя должно быть init.vim. В этом файле мы будем использовать vimscript для записи нашей конфигурации.

Небольшое примечание: Вы также можете использовать init.lua вместо init.vim, подробнее об этом в конце, в этой статье я буду использовать init.vim.

Теперь, мы собираемся настроить Neovim, используя Neovim (звучало довольно странно для меня в первый раз).

Основные правила

Перейдите в каталог, указанный выше, в терминале, введите nvim init.vim и нажмите enter.

Небольшое примечание: Если вы просто введете nvim, не указывая никакого файла, откроется что-то вроде приветственной страницы. Если вы наберете nvim file.md и файл file.md еще не существует, Neovim откроет его, и если вы сохраните его, файл будет создан. Те же правила применимы и к Vim.

Теперь не нужно ничего нажимать, забудьте, что у вас есть мышь, как только перед вами откроется этот пугающий текстовый редактор, просто нажмите i (без клавиши shift, без клавиши ctrl, только простой маленький i), это позволит вам войти в режим вставки. Теперь вы можете нормально редактировать свой файл. Чтобы выйти из режима вставки или вообще из любого режима в Vim, нажмите клавишу escape или esc, это не приведет к выходу из редактора, а просто вернет вас в обычный режим (режим по умолчанию).

Вы также можете использовать клавиши со стрелками для навигации по файлу.

Краткое примечание: в обычном режиме для перемещения влево нажмите ‘h’, для перемещения вправо — ‘l’, для перемещения вверх — ‘k’, а для перемещения вниз — ‘j’.

Прежде чем перейти к плагинам, давайте установим несколько основных правил/настроек:

set number                 " Sets line numbers
set autoindent             " Sets auto indentation
set tabstop=2              " Sets tabstop
set shiftwidth=2           " For proper indentation
set smarttab               " Affects how tab key presses are interpreted
set softtabstop=2          " Control how many columns Vim uses when you hit tab key
set mouse=a                " This lets you use your mouse
set wrap                   " Sets up line wrapping
Вход в полноэкранный режим Выход из полноэкранного режима

Быстрый совет: Если вы не понимаете, что делает определенная настройка, просто откройте Vim и в обычном режиме введите :help <property_name>, например, для shiftwidth сделайте :help shiftwidth.

Затем нажмите клавишу esc, чтобы выйти из режима вставки. Теперь введите :wq (не нужно никуда щелкать или нажимать все эти клавиши ctrl & shift) и нажмите enter, это приведет к записи в файл (по сути, это сохранит файл), а затем к выходу из редактора.

Если вы используете просто тип :w, он просто записывает в файл, но не выходит из редактора.

Если вы используете просто тип :q, он выходит из редактора, но он не позволит вам сделать это, если у вас есть несохраненные изменения, в этом случае сделайте :q!, это вернет все несохраненные изменения и принудительно выйдет из редактора.

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

Давайте теперь настроим плагины!

Настройка плагинов

Существует множество менеджеров плагинов (Vim/Neovim требует менеджеров плагинов для установки плагинов), но для этого руководства мы остановимся на vim-plug.

Для Unix/Linux вы можете установить 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'
Войти в полноэкранный режим Выйти из полноэкранного режима

Для Windows (Powershell) вы можете установить vim-plug с помощью:

iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
    ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force
Войти в полноэкранный режим Выйти из полноэкранного режима

Ознакомьтесь с их инструкциями по установке.

Теперь снова откройте init.vim в neovim и перейдите в конец файла, вы также можете использовать клавиши со стрелками, не нажимайте i в этот раз, нажмите o, это сделает новую строку и переведет вас в режим вставки. Теперь введите следующее (после основных правил):

call plug#begin()

" Your plugins go here

call plug#end()
Войти в полноэкранный режим Выйти из полноэкранного режима

Небольшое замечание: Вы можете использовать " для написания однострочных комментариев в vimscript. Например, " Это комментарий.

Все наши плагины будут находиться между call plug#begin и call plug#end.

Вот некоторые из плагинов, которые я использую:

  • coc.nvim — я расскажу об этом немного подробнее позже
  • presence.nvim — плагин, позволяющий вам показать, что вы используете Vim в Discord
  • lightline.vim — легкий и настраиваемый плагин статус-лайна/таблицы для Vim
  • nerdtree — плагин проводника деревьев для vim, подробнее об этом позже
  • nerdtree-git-plugin — плагин для отображения статуса git в nerdtree
  • vim-devicons — плагин для отображения иконок ваших файлов
  • auto-pairs — дополняет ваши круглые скобки, скобки и кавычки
  • copilot.vim — если у вас есть GitHub Copilot, то вы можете использовать его с этим плагином.

Вы можете перечислить свои плагины следующим образом:

call plug#begin

Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'andweeb/presence.nvim'
Plug 'itchyny/lightline.vim'
Plug 'ryanoasis/vim-devicons'
Plug 'preservim/nerdtree' |
            Plug 'Xuyuanp/nerdtree-git-plugin'
Plug 'jiangmiao/auto-pairs'
Plug 'copilot.vim'

call plug#end
Вход в полноэкранный режим Выйти из полноэкранного режима

Быстрое примечание: Всегда помните, что перед установкой плагина, ознакомьтесь с его документацией, потому что иногда там могут быть специальные инструкции по настройке плагина.

Когда все будет готово, сохраните файл и выйдите из Neovim (помните, используйте :wq и нажмите enter). Снова откройте Neovim. Чтобы установить эти плагины, введите :PlugInstall в обычном режиме и нажмите Enter. Откроется другая панель и начнется установка всех плагинов, как только она будет завершена. Закройте панель (:q), затем закройте init.vim. Это приведет к выходу из Neovim, теперь войдите снова, и все плагины начнут работать.

Быстрый совет: для перемещения между панелями нажмите ctrl+w, затем h для перемещения в левую панель и l для перемещения в правую панель.

Coc.nvim & LSP

Что такое LSP?

Ну, LSP (Language Service Provider) — это то, что предоставляет вам языковую поддержку (языковая поддержка в редакторе означает, что он указывает на ваши ошибки и предлагает предложения при кодировании на определенном языке). Он также встроен в neovim начиная с версии 0.5. Здесь мы не будем настраивать родной LSP, вместо этого мы будем использовать coc.nvim.

Что такое Coc.nvim?

Coc.nvim — это экосистема, которая строится за пределами родного LSP, то есть вам не нужно ничего настраивать. Она предоставляет автозаполнение, предложения и некоторые другие возможности. Она рекомендуется для новичков, так как не требует много настроек. Мы уже установили coc.nvim ранее в качестве плагина.

Ну, с этим разобрались, теперь мы можем установить поддержку coc для используемых нами языков. Например, если вы хотите установить поддержку python, просто сделайте :CocInstall coc-python. Большинство языков имеют поддержку как coc-[название языка], но чтобы быть уверенным, просто погуглите, вы легко найдете его.

Связки клавиш

Теперь, уделите время и почувствуйте гордость, вы немного побороли страх перед vim.

В vim/neovim вы можете установить свои собственные связки клавиш, помимо тех, что уже есть.

Например, допустим, я хочу установить привязку для закрытия файла в Neovim. В общем случае я должен буду набрать :q.

Для этого в конце вашего файла init.vim (после call plug#end) добавьте следующее:

nnoremap <C-q> :q<CR>
Войти в полноэкранный режим Выйти из полноэкранного режима

Что это значит?

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

Здесь, в <C-q>, «C-» означает клавишу ctrl, а затем любую клавишу, которую вы хотите использовать в сочетании с ней. Например, <C-q> означает ctrl+q, а <C-k> — ctrl+k.

Между ними <C-q> & <CR> — команда, для которой предназначена данная связка клавиш.

<CR> представляет собой клавишу Enter. Так, nnoremap <C-q> :q<CR> означает, что вы должны нажать ctrl+q, и это будет то же самое, что набрать :q и затем нажать enter.

Поскольку мы установили плагины, например, nerdtree, они принесли нам свои собственные команды, например, теперь у вас есть доступ к :NERDTreeToggle и :CocInstall.

Итак, вот некоторые привязки клавиш, которые вы можете настроить для nerdtree:

nnoremap <leader>n :NERDTreeFocus<CR>
nnoremap <C-n> :NERDTree<CR>
nnoremap <C-t> :NERDTreeToggle<CR>
nnoremap <C-f> :NERDTreeFind<CR>
Войти в полноэкранный режим Выйти из полноэкранного режима

Эта привязка взята из их readme на их GitHub repo, но вы можете изменить ее, вы можете сделать по своему усмотрению, все, что вам подходит. Просто имейте в виду, чтобы не было конфликтующих привязок.

Вы, наверное, задаетесь вопросом, что это за <leader> вон там. Это означает , так что nnoremap <leader>n :NERDTreeFocus<CR> означает, что вам нужно набрать n и будет запущена команда :NERDTreeFocus.

NERDTree

После настройки привязки клавиш для NERDTree, вы можете нажать ctrl+t, чтобы открыть его, вы можете перемещаться по нему так же, как по файлам, используя клавиши со стрелками или [h, j, k, l]. Чтобы удалить или переименовать файл, нажмите m, и откроется меню с описанием того, как это сделать. Чтобы создать файл, перейдите к узлу, в котором он должен находиться, а затем нажмите m, чтобы открыть меню.

На этом все.

Темы

Темы можно установить так же, как и плагины. Вы можете поискать темы, их существует множество. Лично я не использую никаких тем, потому что мне достаточно темы моего терминала.

Не волнуйтесь, в конце этой статьи я перечислил несколько ресурсов, которые помогут вам найти хорошую тему.

Lua & Vimscript

Ранее я говорил, что вы могли бы поместить свой конфиг и в init.lua. Многие люди предпочитают использовать Lua, потому что он более логичен, чем Vimscript.

Если вы хотите преобразовать ваш init.vim в init.lua, вы можете ознакомиться с этой статьей Оливье Рокеса.

Окончательный вид

Если вы следовали всему, что написано в этой статье, ваш init.vim должен выглядеть примерно так:

" Basic Rules

set number
set autoindent
set tabstop=2
set shiftwidth=2
set smarttab
set softtabstop=2
set mouse=a
set encoding=UTF-8
set wrap


" Plugins

call plug#begin

Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'andweeb/presence.nvim'
Plug 'itchyny/lightline.vim'
Plug 'ryanoasis/vim-devicons'
Plug 'preservim/nerdtree' |
            Plug 'Xuyuanp/nerdtree-git-plugin'
Plug 'jiangmiao/auto-pairs'
Plug 'copilot.vim'

call plug#end


" Keymaps

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

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

Вот как это выглядит сейчас:

Сделайте глубокий вдох и почувствуйте чувство выполненного долга, вы закончили. Теперь экспериментируйте с ним и сделайте Vim своим.

Общие команды в Vim

  • клавиша esc — вернуться из любого режима в обычный режим
  • i — войти в режим вставки
  • o — следующая строка и режим вставки
  • s — удалить символ и вставить
  • dd — удалить строку

Вот шпаргалка по vim от devhints. Вы можете ознакомиться с ней, чтобы узнать больше команд.

Некоторые советы

  • Не отказывайтесь от Vim, попробуйте хотя бы неделю или две, прежде чем бросать его. Я знаю, что поначалу он довольно раздражает, но многие люди в итоге любят его после использования.
  • Не закрывайте Vim, не выходите из терминала без выхода из Vim, иногда это может привести к повреждению файлов.
  • Не используйте ctrl+z, по какой-то причине мой Vim зависает.
  • Вы можете использовать команды командной оболочки, используя префикс !.
  • Windows может не иметь некоторых функций, которые предлагает Linux, но вы можете установить wsl.
  • Увеличьте скорость набора текста, это также поможет вам в целом.
  • Используйте псевдонимы для ускорения процесса разработки.
  • Практикуйтесь. Это лучший способ освоить Vim.

Некоторые полезные инструменты

  • Используйте перемычку между каталогами, чтобы не нужно было постоянно набирать cd. Я использую z
  • Вы можете использовать терминальный мультиплексор для устройств Linux и Mac. tmux — известный и единственный, который я знаю. Однако никогда не слышал о терминальных мультиплексорах в Powershell.

Больше ресурсов

  • awesome-neovim — Коллекция замечательных плагинов и тем для neovim, которые вы можете попробовать
  • r/vim — Замечательное сообщество, если у вас есть вопросы по Vim
  • r/neovim — Аналогично r/vim
  • neovim docs — Официальная документация по Neovim
  • vim docs — Документация по Vim
  • nerd fonts — Позволяет вам иметь больше глифов и шрифтовых лигатур.

Если кто-то хочет указать на что-то, что я упустил, или на любой другой ресурс, или просто сомневается в том, что я не смог объяснить правильно, пожалуйста, прокомментируйте это ниже.

Надеюсь, вам понравилось!

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