Neovim: Плагины для начала работы


Вы можете ознакомиться с версией на испанском языке здесь.

Вы хотите настроить Neovim, но не знаете, с чего начать? Позвольте мне помочь вам с этим. Я покажу вам несколько плагинов, которые многие люди в сообществе Neovim используют уже давно.

Вся конфигурация, показанная в этом посте, будет находиться в этом репозитории: nvim-starter — ветка: 02-opinionated.

Требования

Если вы совсем новичок в Neovim, я рекомендую вам изучить синтаксис lua. Если вы не хотите учить все, по крайней мере, у вас есть справочник, чтобы знать, что является правильным. Все плагины, которыми я здесь поделюсь, настраиваются с помощью lua.

Если вы еще не создали конфигурацию для Neovim, сделайте это сейчас. Вот руководство со всем, что вам нужно знать: Создайте свою первую конфигурацию Neovim на языке lua.

Вам понадобится последняя стабильная версия Neovim. Вы можете скачать ее из раздела релизов на github. С этого момента я буду считать, что вы используете Neovim v0.7.

Как устанавливать плагины?

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

:set packpath?
Войти в полноэкранный режим Выйти из полноэкранного режима

Это покажет список, разделенный запятыми, который мне трудно читать. Мы можем получить нечто лучшее, используя немного lua.

:lua vim.tbl_map(print, vim.opt.packpath:get())
Войти в полноэкранный режим Выйти из полноэкранного режима

Здесь будет показан тот же список, но теперь каждый путь будет в отдельной строке.

В одной из этих директорий мы должны создать папку pack, а внутри папки мы должны создать «пакет». Пакет — это папка, содержащая несколько плагинов. Он должен иметь такую структуру.

package-folder
├── opt
│   ├── [plugin 1]
│   └── [plugin 2]
└── start
    ├── [plugin 3]
    └── [plugin 4]
Вход в полноэкранный режим Выход из полноэкранного режима

В этом примере мы создаем папку с двумя другими папками внутри: opt и start. Плагины в opt будут загружены только в том случае, если мы выполним команду packadd. Плагины в start будут загружаться автоматически в процессе запуска.

Итак, предположим, что у нас есть этот путь в packpath.

/home/dev/.local/share/nvim/site
Вход в полноэкранный режим Выйти из полноэкранного режима

Мы хотим установить туда плагины, что нам делать? Создайте папку pack. Затем создайте папку с любым именем. Давайте назовем пакет github, потому что почему бы и нет? Таким образом, полный путь для наших плагинов будет таким.

/home/dev/.local/share/nvim/site/pack/github
Вход в полноэкранный режим Выйти из полноэкранного режима

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

/home/dev/.local/share/nvim/site/pack/github/start/lualine.nvim
Войти в полноэкранный режим Выйти из полноэкранного режима

Вот и все. Ну… вам нужно настроить плагин, но это уже другая история.

Чтобы узнать больше о пакетах в Neovim, прочитайте страницу помощи.

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

Менеджер плагинов

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

На данный момент это самые популярные менеджеры плагинов в экосистеме Neovim.

  • packer.nvim
  • paq.nvim

Если вы предпочитаете минимализм, обратите внимание на paq. Если вам нужно что-то с большим количеством функций, используйте packer.

Не забудьте внимательно прочитать инструкции к выбранному вами менеджеру плагинов.

Плагины

Tokyonight

Github: folke/tokyonight.nvim

Конечно, первое, что вам нужно сделать, это изменить тему по умолчанию. Мы можем сделать это с помощью команды colorscheme, за которой следует название темы.

В lua мы можем вызывать команды vim с помощью vim.cmd. Итак, чтобы применить тему, мы должны сделать следующее.

vim.cmd('colorscheme name-of-theme')
Войти в полноэкранный режим Выйти из полноэкранного режима

Вот как мы применяем тему tokyonight.

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

onedark.vim

Github: joshdick/onedark.vim

Порт темы Atom по умолчанию.

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

darkplus.nvim

Github: lunarvim/darkplus.nvim

Порт темы VSCode, используемой по умолчанию.

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

monokai.nvim

Github: tanvirtin/monokai.nvim

Порт темы Sublime Text по умолчанию.

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

nvim-web-devicons

Github: kyazdani42/nvim-web-devicons

Коллекция функций для отображения иконок. Обычно мы не взаимодействуем с этим плагином напрямую, в основном он используется другими плагинами, чтобы позволить им отображать иконки.

Самого по себе nvim-web-devicons недостаточно, вам нужно установить шрифт, поддерживающий иконки. Вы можете найти хорошую коллекцию на сайте nerdfonts.com.

Lualine

Github: nvim-lualine/lualine.nvim

Lualine может дать нам хорошо выглядящую строку состояния. Если вы не знаете, строка состояния — это то, что внизу показывает имя файла и положение курсора. Lualine может сделать ее красивой, а также добавить дополнительную информацию.

Чтобы начать использовать lualine, необходимо вызвать функцию setup модуля lualine.

require('lualine').setup({})
Вход в полноэкранный режим Выход из полноэкранного режима

А как нам настроить его? В документации показана конфигурация по умолчанию.

:help lualine-Default-configuration
Вход в полноэкранный режим Выход из полноэкранного режима

Все, что нам нужно сделать, это добавить интересующие нас свойства в аргумент .setup().

vim.opt.showmode = false

require('lualine').setup({
  options = {
    theme = 'onedark',
    icons_enabled = true,
    component_separators = '|',
    section_separators = '',
  },
})
Вход в полноэкранный режим Выйти из полноэкранного режима

Первое, что я делаю в этом примере, это отключаю showmode, потому что lualine уже показывает текущий режим.

Вот что мы получили в .setup().

  • options.theme: Установлено значение onedark, потому что это цветовая схема, которую я использую. Но мы можем изменить его на любую из доступных тем в плагине.

  • options.icons_enabled: Если установлено значение true, то отображаются иконки в секции типа файла.

  • options.component_separators: Символ, используемый между компонентами.

  • options.section_separators: Символ, используемый между разделами.

Bufferline

Github: akinsho/bufferline.nvim

Знаете, как другие редакторы показывают вкладку для каждого открытого файла? Так вот, в Neovim все не так. Для начала мы называем их страницами вкладок, они похожи на рабочие пространства, внутри них вы можете открыть несколько окон. Вы даже можете иметь разные рабочие каталоги на каждой странице вкладок. Но некоторые люди предпочитают «традиционное» поведение, и именно это делает bufferline, он модифицирует tabline так, чтобы он мог показывать текущие открытые файлы.

Чтобы начать использовать этот плагин, нужно вызвать функцию .setup() модуля bufferline.

require('bufferline').setup({})
Вход в полноэкранный режим Выйти из полноэкранного режима

Ссылку на доступные опции вы можете найти на странице справки.

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

Вот пример конфигурации.

require('bufferline').setup({
  options = {
    mode = 'buffers',
    offsets = {
      {filetype = 'NvimTree'}
    },
  }
  highlights = {
    buffer_selected = {
      italic = false
    },
    indicator_selected = {
      fg = {attribute = 'fg', highlight = 'Function'},
      italic = false
    }
  }
})
Вход в полноэкранный режим Выход из полноэкранного режима
  • options.mode: Значением 'buffers' мы указываем bufferline, что нам нужна одна вкладка на файл.

  • options.offsets: Должен быть списком типов файлов. Когда появляется один из этих типов файлов, bufferline будет избегать отображения вкладки над окном. Здесь мы добавляем NvimTree, потому что это будет наш файловый проводник. Когда появится окно nvim-tree, оно будет выглядеть как боковая панель.

  • highlights: С помощью этого параметра мы можем изменить цвета компонентов вкладки. Каждая секция (например, buffer_selected) должна быть именем компонента. В этом примере я использую italic = false, чтобы сообщить bufferline, что я хочу отключить курсивные символы. Свойство fg — это свойство, которое изменяет цвет символов. Здесь я указываю ему использовать тот же цвет выделения, который мой colorcheme использует для функций. Если вы хотите узнать больше подробностей о выделениях, посмотрите :help bufferline-highlights.

indent-blankline.nvim

Github: lukas-reineke/indent-blankline.nvim

Добавляет направляющие отступов в текущий файл.

Этот плагин, в частности, можно настроить несколькими способами. Мы можем изменять его поведение, изменяя глобальные переменные, например, так.

vim.g.indent_blankline_char = '▏'
Войти в полноэкранный режим Выйти из полноэкранного режима

Или, если вы предпочитаете vimscript.

let g: indent_blankline_char = '▏'
Войти в полноэкранный режим Выйти из полноэкранного режима

Полный список переменных вы можете найти на странице справки.

:help indent-blankline-variables
Ввести полноэкранный режим Выйти из полноэкранного режима

Есть и третий вариант: использовать функцию .setup() модуля indent_blankline.

require('indent_blankline').setup({
  char = '▏',
})
Вход в полноэкранный режим Выйти из полноэкранного режима

Обратите внимание, что нам не нужен префикс indent_blankline_ при использовании .setup().

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

require('indent_blankline').setup({
  char = '▏',
  show_trailing_blankline_indent = false,
  show_first_indent_level = false,
  use_treesitter = true,
  show_current_context = false
})
Войти в полноэкранный режим Выйти из полноэкранного режима
  • char: символ, который будет отображаться на экране.

  • show_trailing_blankline_indent: Показывать направляющие отступов в пустых строках.

  • show_first_indent_level: Показать направляющие отступов в первом столбце.

  • use_treesitter: Использовать treesitter для определения места, где должна находиться направляющая отступа.

  • show_current_context: Выделить уровень отступа, на котором находится курсор.

Treesitter

Github: nvim-treesitter/nvim-treesitter

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

Сам по себе treesitter не делает ничего полезного, его плагины, использующие treesitter, добавляют возможности Neovim. Введите nvim-treesitter, он содержит модули, которые расширяют стандартные возможности Neovim. Например, highlight, самый популярный модуль, может сделать подсветку синтаксиса намного более точной, чем по умолчанию.

Подробности о модулях nvim-treesitter можно найти на странице справки.

:help nvim-treesitter-modules
Вход в полноэкранный режим Выход из полноэкранного режима

Чтобы включить модуль, мы должны вызвать функцию .setup() в nvim-treesitter.configs. Затем мы указываем конфигурацию для каждого модуля в таблице lua.

require('nvim-treesitter.configs').setup({
  highlight = {
    enable = true,
  },
})
Вход в полноэкранный режим Выход из полноэкранного режима

Все модули в nvim-treesitter отключены по умолчанию, поэтому, как минимум, мы должны добавить enable = true, чтобы использовать его.

Теперь, чтобы treesitter действительно работал, нам нужен парсер языка. Парсер — это то, что читает код. Для установки парсера мы используем команду TSInstall, за которой следует название языка.

Таким образом, для установки парсера javascript мы используем эту команду.

:TSInstall javascript
Войти в полноэкранный режим Выйти из полноэкранного режима

Мы также можем указать nvim-treesitter, какие парсеры мы хотим устанавливать всегда. Для этого мы используем свойство ensure_installed в функции .setup().

require('nvim-treesitter.configs').setup({
  highlight = {
    enable = true,
  },
  ensure_installed = {
    'javascript',
    'typescript',
    'tsx',
    'css',
    'json',
    'lua',
  },
})
Вход в полноэкранный режим Выход из полноэкранного режима

nvim-treesitter-textobjects

Github: nvim-treesitter/nvim-treesitter-textobjects

Текстовые объекты в Neovim — это шаблоны текста, такие как слова, абзацы, xml-теги и т.д. nvim-treesitter-textobjects добавляет больше текстовых объектов, основанных на запросах treesitter. Функции, классы, условные операторы и циклы могут быть доступны как текстовые объекты, если мы включим их с помощью nvim-treesitter-textobjects.

Время повтора: Текстовые объекты используются в режиме «оператор в ожидании». Когда вы используете оператор, например d (клавиатурное сокращение для delete), вы входите в режим ожидания оператора. В этом режиме Neovim будет ждать, пока вы предоставите текстовый объект или движение. Поэтому, когда вы нажимаете что-то вроде diw, этот d является оператором, а iw — текстовым объектом. Вы можете узнать больше о движениях и текстовых объектах, если прочитаете страницу справки.

:help motion.txt
Вход в полноэкранный режим Выход из полноэкранного режима

Давайте вернемся к этой штуке с древоточцем.

nvim-treesitter-textobjects имеет свои собственные подмодули.

:help nvim-treesitter-textobjects-modules
Вход в полноэкранный режим Выход из полноэкранного режима

Для настройки модуля мы используем ту же функцию .setup() в nvim-treesitter.configs.

require('nvim-treesitter.configs').setup({
  highlight = {
    enable = true,
  },
  textobjects = {
    select = {
      enable = true,
      lookahead = true,
      keymaps = {
        ['af'] = '@function.outer',
        ['if'] = '@function.inner',
        ['ac'] = '@class.outer',
        ['ic'] = '@class.inner',
      }
    },
  },
  ensure_installed = {
    --- parsers....
  },
})
Вход в полноэкранный режим Выход из полноэкранного режима

Здесь мы настраиваем модуль select в textobjects, с его помощью мы можем добавлять новые текстовые объекты. Теперь внутри select у нас есть следующие опции:

  • enable: Загружает модуль.

  • lookahead: Заставляет курсор перейти к ближайшему совпадению.

  • keymaps: Связки клавиш для текстовых объектов. В левой части мы объявляем комбинации клавиш. В правой части находятся «группы захвата», они представляют собой древовидный запрос. Полный список групп вы можете найти здесь: Builtin textobjects.

targets.vim

Github: wellle/targets.vim

Этот плагин создает новые текстовые объекты. Он добавляет такие вещи, как теги, пары, аргументы функций и т.д. Я рекомендую вам прочитать официальную документацию, в ней вы найдете подробную информацию (с примерами) о каждом новом текстовом объекте: targets.vim — Overview.

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

:help targets-settings
Войти в полноэкранный режим Выйти из полноэкранного режима

Комментарий.nvim

Github: numToStr/Comment.nvim

Добавляет новый оператор для переключения комментариев в коде. По умолчанию оператор привязан к клавиатурному сокращению gc. Это означает, что мы можем использовать любую комбинацию, которую Neovim может сделать в режиме ожидания оператора. Мы можем закомментировать слово с помощью gciw, закомментировать абзац с помощью gcap, закомментировать произвольное количество строк с помощью gc + число + j. Единственным ограничением будет ваше знание Neovim, например, сколько движений или текстовых объектов вы знаете.

gc также будет работать в визуальном режиме. В визуальном режиме он будет комментировать выделенные строки.

В обычном режиме используйте gcc для комментирования отдельных строк.

Единственное, что вам нужно сделать, чтобы это работало, это вызвать функцию .setup() модуля Comment.

require('Comment').setup({})
Вход в полноэкранный режим Выйти из полноэкранного режима

Чтобы узнать, какие опции доступны, прочитайте документацию на github: Comment.nvim — Setup.

vim-surround

Github: tpope/vim-surround

Этот плагин предназначен для работы с окружающими шаблонами. Мы можем добавлять, удалять и изменять окружение для фрагмента текста.

Позвольте мне объяснить.

Если у нас есть 'Hello, world', мы можем удалить кавычки, используя ds'. Итак, ds — это привязка клавиш для удаления, а ' — это «окружение», которое мы хотим удалить.

Если мы хотим добавить окружение, мы используем ys. Допустим, у нас есть слово Hello, если мы хотим обернуть его в парантезу, мы используем ysiw). ys — это привязка клавиш для добавления окружения, iw — текстовый объект для слова, а ) — образец, который мы хотим добавить. Результатом будет (Hello).

Если мы находимся в визуальном режиме, мы можем использовать S + шаблон для окружения выделенного текста.

Чтобы изменить окружение, используйте cs. Допустим, у нас есть 'Hello, world', если мы хотим заменить одинарные кавычки на двойные, мы используем cs'". cs — это привязка клавиш для изменения окружения, ' — то, что мы хотим изменить, а " — новое окружение.

nvim-tree

Github: kyazdani42/nvim-tree.lua

Плагин для файлового менеджера. Он показывает все файлы в виде дерева, как и большинство других редакторов. В нем есть все обычные функции: создание, удаление и переименование файлов.

Чтобы начать использовать этот плагин, нужно вызвать функцию .setup() модуля nvim-tree.

require('nvim-tree').setup({})
Вход в полноэкранный режим Выход из полноэкранного режима

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

:help nvim-tree-default-mappings
Войти в полноэкранный режим Выход из полноэкранного режима

Там же можно найти ссылку на доступные опции.

:help nvim-tree-setup
Войти в полноэкранный режим Выход из полноэкранного режима

Вот пример конфигурации.

require('nvim-tree').setup({
  hijack_cursor = false,
  on_attach = function(bufnr)
    local bufmap = function(lhs, rhs, desc)
      vim.keymap.set('n', lhs, rhs, {buffer = bufnr, desc = desc})
    end

    -- See :help nvim-tree.api
    local api = require('nvim-tree.api')

    bufmap('L', api.node.open.edit, 'Expand folder or go to file')
    bufmap('H', api.node.navigate.parent_close, 'Close parent folder')
    bufmap('gh', api.tree.toggle_hidden_filter, 'Toggle hidden files')
  end
})

vim.keymap.set('n', '<leader>e', '<cmd>NvimTreeToggle<cr>')
Вход в полноэкранный режим Выход из полноэкранного режима

Здесь я использую <leader>e для переключения файлового менеджера. Затем в .setup() мы имеем фактическую конфигурацию.

  • hijack_cursor: При установке значения true nvim-tree будет помещать курсор в начало имени в узле. Установите значение false, чтобы отключить это.

  • on_attach: Функция обратного вызова, она будет выполняться каждый раз, когда nvim-tree открывает файловый менеджер. В документации рекомендуется установить здесь наши привязки клавиш. Мы используем модуль nvim-tree.api для доступа к функциям nvim-tree. Мы используем vim.keymap.set для создания каждой привязки. Мы привязываем L к функции api.node.open.edit для открытия узла в дереве. С помощью H мы закрываем узел под курсором. С помощью gh можно переключать скрытые файлы.

Телескоп

Github: nvim-telescope/telescope.nvim

Цель Telescope — предоставить интерфейс для фильтрации списка элементов. Что мы можем сделать с его помощью? Мы можем искать недавно открытые файлы, текущие открытые файлы, коммиты git, историю команд, привязки клавиш, цветовые схемы… и 45 других вещей. Да, в текущем состоянии telescope имеет 51 команду. Хотите узнать, откуда я знаю? Вы можете найти команду telescope, используя telescope.

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

Мы можем использовать команды telescope без какой-либо настройки. Умолчания на самом деле довольно хороши. Но если вы хотите узнать, какие опции доступны, вы можете прочитать страницу справки.

:help telescope.setup()
Войти в полноэкранный режим Выход из полноэкранного режима

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

vim.keymap.set('n', '<leader><space>', '<cmd>Telescope buffers<cr>')
vim.keymap.set('n', '<leader>?', '<cmd>Telescope oldfiles<cr>')
vim.keymap.set('n', '<leader>ff', '<cmd>Telescope find_files<cr>')
vim.keymap.set('n', '<leader>fg', '<cmd>Telescope live_grep<cr>')
vim.keymap.set('n', '<leader>fd', '<cmd>Telescope diagnostics<cr>')
vim.keymap.set('n', '<leader>fs', '<cmd>Telescope current_buffer_fuzzy_find<cr>')
Вход в полноэкранный режим Выход из полноэкранного режима

Стоит упомянуть, что telescope может улучшить свою производительность (в некоторых случаях), если мы установим внешние инструменты, такие как fd и ripgrep.

telescope-fzf-native

Github: nvim-telescope/telescope-fzf-native.nvim

Это расширение для telescope. Оно позволяет telescope использовать тот же алгоритм поиска, который использует fzf. Это означает, что мы можем использовать тот же синтаксис в наших поисковых запросах. А также улучшает производительность поиска.

Этот плагин написан на C, поэтому перед использованием его необходимо скомпилировать. Убедитесь, что у вас есть компилятор C и make (инструмент сборки).

Чтобы использовать это расширение в телескопе, нужно вызвать функцию .load_extension() в телескопе.

require('telescope').load_extension('fzf')
Вход в полноэкранный режим Выход из полноэкранного режима

Toggleterm

Github: akinsho/toggleterm.nvim

Хорошая новость в том, что Neovim имеет «интегрированный терминал» и нам действительно не нужен никакой плагин для его использования. Плохая новость — это не похоже на «компонент пользовательского интерфейса», который мы можем легко переключать, это скорее особый тип буфера. Toggleterm управляет окнами с терминальными буферами, позволяя нам переключать их с помощью одной привязки клавиш.

Toggleterm имеет целую кучу возможностей, рекомендую ознакомиться с документацией на github: Toggleterm — roadmap.

Чтобы начать использовать этот плагин, нам нужно вызвать функцию .setup() из toggleterm. Вот пример с опциями, которые я считаю интересными.

require('toggleterm').setup({
  open_mapping = '<C-g>',
  direction = 'horizontal',
  shade_terminals = true
})
Войти в полноэкранный режим Выход из полноэкранного режима
  • open_mapping: Это привязка клавиш, которую мы хотим использовать для переключения окна терминала.

  • direction: Определяет положение окна терминала. Возможные значения: horizontal, vertical или float.

  • shade_terminals: Затемняет цвет фона окна терминала, чтобы сделать его отличным от «обычных окон».

vim-fugitive

Github: tpope/vim-fugitive

Предоставляет графический интерфейс для управления git-репозиторием внутри Neovim. Он также оборачивает git cli, так что вы можете вызвать любую команду из Neovim.

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

:help fugitive.txt
Вход в полноэкранный режим Выход из полноэкранного режима

Gitsigns

Github: lewis6991/gitsigns.nvim

Gitsigns — это плагин, который можно использовать для отображения «знаков» в любой строке, которая была каким-либо образом изменена. Он сообщит нам, какие строки были добавлены, где мы удалили строку и какие строки были изменены. У него есть много других функций, слишком много, чтобы перечислять их здесь. Если хотите узнать больше, загляните на страницу справки.

:help gitsigns-functions
Вход в полноэкранный режим Выход из полноэкранного режима

Описание каждой доступной опции вы найдете на странице справки.

:help gitsigns-config
Вход в полноэкранный режим Выход из полноэкранного режима

Если вы просто хотите настроить текст знаков, вот как это сделать.

require('gitsigns').setup({
  signs = {
    add = {text = '▎'},
    change = {text = '▎'},
    delete = {text = '➤'},
    topdelete = {text = '➤'},
    changedelete = {text = '▎'},
  }
})
Войти в полноэкранный режим Выйти из полноэкранного режима

Пленарное заседание

Github: nvim-lua/plenary.nvim

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

Telescope использует этот плагин внутри, поэтому убедитесь, что вы его установили.

vim-repeat

Github: tpope/vim-repeat

Добавляет поддержку «точечного повтора» для других плагинов. Если вы не знаете, когда мы нажимаем клавишу с точкой (.), Neovim пытается повторить последнее действие, которое мы сделали. Например, если мы удалили слово с помощью diw, мы можем повторить это действие, просто нажав .. С помощью vim-repeat мы можем повторить действия, выполненные плагинами.

Editorconfig

Github: editorconfig/editorconfig-vim

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

vim-bbye

Github: moll/vim-bbye

Предоставляет команды, позволяющие закрыть буфер, не нарушая его расположение. Скажем, у вас открыто два окна, если вы закроете файл с помощью встроенной команды bdelete, вы закроете буфер и окно. С помощью vim-bbye мы можем использовать команду Bdelete, чтобы удалить буфер и оставить окно открытым.

Все, что вам нужно сделать, это сделать привязку клавиш для закрытия буфера с помощью Bdelete.

vim.keymap.set('n', '<leader>bc', '<cmd>Bdelete<CR>')
Вход в полноэкранный режим Выход из полноэкранного режима

Что дальше?

Следующий шаг — заставить Neovim действительно понимать наш код: пусть он автозаполняет переменные, настраивает переход к определению, переименовывает переменные и все такое. Для этого я рекомендую использовать встроенный клиент LSP, настроить его с помощью nvim-lspconfig, а затем настроить автозаполнение с помощью nvim-cmp. Но сделать это не совсем просто, поэтому я сделал еще одно руководство специально для этого:

  • Настройка nvim-lspconfig + nvim-cmp

Где мы можем найти больше плагинов?

Вот несколько ресурсов, где вы можете найти интересные вещи для Neovim.

  • awesome-neovim
  • neovimcraft
  • на этой неделе в Neovim

Заключение

Что мы сделали сегодня? Мы рассмотрели несколько цветовых схем для Neovim. Мы узнали о плагинах, которые можно использовать, чтобы привнести в Neovim возможности других редакторов. Например, с помощью bufferline мы можем иметь вкладку для каждого открытого файла. Nvim-tree предоставляет файловый менеджер в стиле дерева. Мы можем использовать gitsigns и fugitive для интеграции с git. Мы можем искать всевозможные вещи с помощью telescope. Мы можем манипулировать текстом с помощью таких плагинов, как nvim-treesitter и vim-surround. Со всем этим мы можем получить действительно хороший опыт работы с Neovim.


Спасибо за ваше время. Если вы нашли эту статью полезной и хотите поддержать мои усилия, оставьте чаевые и купите мне кофе ☕.

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