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

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

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

Требования

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

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

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

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

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

Традиционный способ узнать доступные каталоги для наших плагинов — это использование этой команды.

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

Neovim отображает список, разделенный запятыми. Я нахожу этот формат трудным для чтения. Мы можем добиться большего, используя возможности lua.

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

При этом Neovim покажет вам тот же список, но каждый каталог будет показан в одной строке.

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

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

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

Предположим, что у нас есть этот каталог в нашем 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.nvim.

Не забудьте прочитать инструкцию к хендлеру, который вы решили использовать.

Плагины

Токионайт

Github: folke/tokyonight.nvim

Потому что первое, что вы должны сделать при установке Neovim, это изменить тему по умолчанию. Для применения темы мы используем команду colorscheme, за которой следует название темы.

Для выполнения команд из lua мы используем vim.cmd. Поэтому, если мы хотим применить тему, мы должны сделать следующее.

vim.cmd('colorscheme nombre-tema')
Войдите в полноэкранный режим Выход из полноэкранного режима

Чтобы использовать 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

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

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

Луалин

Github: nvim-lualine/lualine.nvim

Обеспечивает привлекательную «линию состояния». В строке состояния мы видим тип файла, местоположение курсора и тому подобное. Луалин улучшает вид строки состояния, а также добавляет в нее больше информации.

Чтобы начать его использовать, достаточно вызвать функцию .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 = '',
  },
})
Войдите в полноэкранный режим Выход из полноэкранного режима

В этом примере первое, что мы делаем, это отключаем опцию Neovim showmode, потому что lualine уже показывает нам, в каком режиме мы находимся.

И вот что мы имеем в .setup().

  • options.theme: Определяет, какую тему будет использовать Lualine. Вы можете изменить значение onedark на любую из доступных тем.

  • options.icons_enabled: Определяет, может ли lualine использовать иконки. Значение true используется для включения иконок, false — наоборот.

  • options.component_separators: Это символ, который будет использоваться для разделения «компонентов» луалина.

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

Буферная линия

Github: akinsho/bufferline.nvim

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

Чтобы начать его использовать, просто вызовите функцию .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' мы указываем, что хотим «традиционные вкладки», отображающие список открытых файлов.

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

  • highlights: Позволяет изменять цвета в определенных областях. Каждая секция (например, buffer_selected) относится к области. В этом примере я помещаю italic = false, чтобы отключить курсив. Опция fg изменяет цвет букв. В этом примере я указываю, что он должен принять тот же цвет, который моя тема использует для функций. Подробности опции выделения можно посмотреть с помощью команды :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_ для свойств.

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

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

Здесь значение true активирует функциональность опции, а 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, который предлагает несколько «модулей», которые мы можем использовать, чтобы воспользоваться преимуществами treesitter.

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

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

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

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

Здесь мы настраиваем модуль highlight, который отвечает за подсветку синтаксиса. По умолчанию все модули в 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 соответствуют текстовым шаблонам, которые можно найти в файле. По умолчанию Neovim может выполнять действия над словами, абзацами, тегами xml и некоторыми другими. nvim-treesitter-textbjects добавляет больше шаблонов, основанных на запросах treesitter. Мы сможем действовать с функциями, классами, условиями и повторяющимися циклами.

Если вы не знаете, текстовые объекты используются Neovim в режиме «ожидающего оператора». Когда мы используем оператор, например d (сочетание клавиш для delete), Neovim переходит в режим отложенного оператора. Когда мы нажимаем комбинацию типа daw, то d — это оператор, а aw — текстовый объект. Чтобы узнать больше об этом, ознакомьтесь с документацией.

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

Возвращаемся к обычному программированию.

nvim-treesitter-textobjects имеет свои подмодули. С помощью этой команды можно перейти к документации.

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

Чтобы настроить nvim-treesitter-textobjects, необходимо добавить свойство textobjects в функцию .setup() функции nvim-treesitter.

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 подмодуля textbjects, который позволяет Neovim выбирать детали на основе древовидных запросов. Внутри модуля у нас есть следующие опции.

  • enable: Определяет, должен ли модуль быть включен.

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

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

targets.vim

Github: wellle/targets.vim

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

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

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

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

Github: numToStr/Comment.nvim

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

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

С помощью сочетания клавиш gcc мы можем закомментировать строку в обычном режиме.

Этот плагин не требует ручной настройки. Нам нужно только вызвать функцию .setup() модуля Comment.

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

Если вы хотите узнать о доступных опциях, ознакомьтесь с документацией: 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: Определяет, должен ли nvim-tree обрабатывать положение курсора в окне. Если изменить его на true, nvim-tree помещает курсор в начало имени каждого «узла».

  • on_attach: Это функция, которая будет выполняться каждый раз, когда nvim-tree открывает окно. Рекомендуется создавать ярлыки в этой функции. Здесь мы используем модуль nvim-tree.api для доступа к функциям nvim-tree. Для создания ярлыков мы используем функцию Neovim vim.keymap.set. В первом ярлыке мы назначаем L функции api.node.open.edit, которая позволяет нам открыть узел. Используйте H, чтобы закрыть узел, в котором находится курсор. Используйте gh, чтобы показать/скрыть скрытые файлы.

Телескоп

Github: nvim-telescope/telescope.nvim

Основная функциональность телескопа заключается в возможности интерактивной фильтрации списка элементов. По умолчанию он позволяет нам фильтровать такие списки, как история файлов, открытые файлы, коммиты git, ошибки файлов и 47 других вещей. Да, telescope в настоящее время имеет 51 подкоманду. Откуда я это знаю? Потому что вы можете искать команду telescope с помощью telescope.

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

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

: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, для увеличения скорости поиска.

телескоп-фзф-натив

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

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

Код расширения написан на C, поэтому для его использования необходимо убедиться, что у вас установлен компилятор C, а также make.

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

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

Toggleterm

Github: akinsho/toggleterm.nvim

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

Toggleterm имеет много возможностей, я рекомендую вам прочитать документацию для более подробной информации: Toggleterm.nvim — Roadmap.

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

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

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

  • shade_terminals: Определяет, должен ли цвет фона окна терминала быть темнее, чем у обычных окон.

vim-fugitive

Github: tpope/vim-fugitive

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

Для получения полной информации об этом плагине ознакомьтесь с документацией.

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

Gitsigns

Github: lewis6991/gitsigns.nvim

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

: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

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

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

vim-repeat

Github: tpope/vim-repeat

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

editorconfig

Github: editorconfig/editorconfig-vim

EditorConfig — это как файл конфигурации, но он ограничен параметрами стиля, такими как размер отступа или кодировка файла. С помощью editorconfig-vim мы можем заставить Neovim читать этот формат.

vim-bbye

Github: moll/vim-bbye

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

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

Что дальше?

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

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

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

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

  • awesome-neovim
  • неовимкрафт
  • на этой неделе в неовиме

Заключение

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


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

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