LINUX.ORG.RU

Переезд с vim на neovim

 


0

5

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

Посмотрел обзоры neovim, все эти клевые фичи: tree-sitter, telescope, встроенная поддержка lsp, поддержка rgb-цвета в терминале — и захотелось туда переехать.

Но возникли вопросы:

  1. Среди цветовых схем с поддержкой tree-sitter не понравилась ни одна. Насколько сложно допиливается обычная схема до поддержки tree-sitter и есть ли об этом мануалы?

  2. Автор nvim продвигает идею, что ctrl-n/ctrl-p/ctrl-y — это прямо очень удобно для автокомплита, с чем я категорически не согласен. Если уж доходит до выбора варианта из выпадающего меню, я предпочитаю стрелки + tab. И, помнится, были какие-то приключения с PUMvisible, чтобы сделать более-менее вменяемое поведение. Насколько эта часть кастомизируемая? Можно ли допилить до состояния «после ./-> показываем варианты автокомплита автоматом, в противном случае только по хоткею»?

  3. Есть ли в neovim какие-нибудь красивые интеграции со внешними форматтерами? Понятно, что можно настроить комбинацию на запуск clang-format по хоткею, но вдруг есть что-то более современное? Опять-таки видео от разработчиком neovim с приседаниями вокруг связки lsp+format пугает.

Ответ на: комментарий от bread

предпочитает нажимать одну клавишу

Именно, и клавиши эти h,j,k,l, которые не требуют отрыва рук от правильного положения рук на клавиатуре. Даже «пердолинг» с Ctrl не требует отрыва рук, чего не скажешь про использование стрелок, отсюда и комментарий о том, что для пользователя vim'a предпочитание стрелок - нонсенс

Jurik_Phys ★★★★★
()
Ответ на: комментарий от Jurik_Phys

Тема про completion в режиме вставки. Запрещать себе там стрелки очень неудобно. Но я знаю, что адепты готовы кувыркаться через голову и переключать режимы каждую секунду, лишь бы пальцы не снимать с home row. Хотя во всех прочих программах они это делают и не жужжат.

bread
()
Ответ на: комментарий от bread

completion в режиме вставки

Использую https://github.com/Shougo/ddc.vim плагин для завершения слов, в нём вылетает менюшка и в ней через <Tab> можно выбрать нужный вариант. Наверное можно делать выбор и через стрелки, но мне <Tab> хватает с головой. Про Ctrl+n, Ctrl+p не в курсе

Jurik_Phys ★★★★★
()

Сейчас будет холивор, но все же дам совет: попробуй готовые сборки. Например, lazyvim в целом просто работает.

Там включен небольшой и адекватный набор плагинов, которые активно поддерживаются. Конфиг состоит из отдельных файлов и не нужно самому придумывать где/что включать/выключать. Дополнительно идет extras, которые можно включать индивидуально.

Готовая сборка - это не готовый конфиг. Все равно предполагается, что многое можно по желанию настроить под себя, включать/отключать/настраивать плагины.

Среди цветовых схем с поддержкой tree-sitter не понравилась ни одна. Насколько сложно допиливается обычная схема до поддержки tree-sitter и есть ли об этом мануалы?

Дело вкуса, но tokyonight/solarized/gruvbox не подходят? Там несколько вариантов каждой темы.

Если уж доходит до выбора варианта из выпадающего меню, я предпочитаю стрелки + tab.

В lazyvim стрелки по умолчанию; я не помню, там tab или ctrl+y по умолчанию, но можно менять как хочется. Это с использованием blink.cmp. В blink.cmp несколько дефолтных вариантов, см. доки про keymap. Раньше все использовали nvim-cmp, но он вроде медленнее и не поддерживает быстрый fuzzy search. В nvim-cmp все тоже настраивается.

Есть ли в neovim какие-нибудь красивые интеграции со внешними форматтерами?

conform.nvim; опять же по умолчанию в lazyvim. Можно по хоткею, можно при сохранении файла.

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

Другая сборка, которую я пробовал, - это astronvim. Но там значительно больше плагинов по умолчанию и некоторые плагины из astrocommunity не очень хорошо работают.

Из личного опыта дополнительно советую поставить:

  • neogit (это как magit в emacs примерно)
  • betterescape (jk - esc, чтобы руку не двигать, в т.ч. для visual mode и терминала)
  • rainbow-delimiters
  • yanky (это extras в lazyvim; visual mode + yank не возвращает курсор в начало!! + история yank)
Davidov ★★★★
()
Последнее исправление: Davidov (всего исправлений: 3)
26 ноября 2025 г.

Ну, если тебя стрелки устраивают как элементы управления vim, то возникает вопрос – а зачем тебе vim/neovim? Поставил бы себе vscode или какую-нибудь java-поделку от jetbrains, и тыкал бы свои стрелки и елозил мышкой по столу. В том и прелесть jkhl и Ctrl-n/Ctrl-p, что не нужно убирать руки с клавиатуры, чтобы что-то сделать, но для этого хорошо бы слепым набором владеть, а ты, видимо, не владеешь. Ну и зачем тебе TUI-приложения вообще?

apterions
()
Ответ на: комментарий от Nohack

Меня больше всего насмешило, что это, оказывается, автор neovim продвигает идею, что стрелки неудобны. А все, как выяснилось тут, пользуются стрелками и не жужжат. Досадно то, что такие господа потом идут что-то писать, как, например, разработчики zellij, которые прибили гвоздями управление своей поделкой к стрелкам, не оставив даже возможности это в конфиге изменить (хотя не знаю, может в новых версиях и додумались эту порнографию убрать). Или как один чудак написал аж целую статью о том, что он «сделал TUI с человеческим лицом» – управляемое мышью. Это он называет «человеческим лицом». И много таких, к сожалению. Недоумеваю, зачем они в TUI лезут, что они в нём забыли.

apterions
()
Ответ на: комментарий от Nohack

Пользователь vim любит стрелки ? Одному мне смешно ?

Использую novim-mode, превращая управление в то, как оно в обычных текстовых редакторах. И что? От Vim нужны его тонны плагинов, нетребовательность к железу и скорость работы. Мне в текстовом редакторе важны скорость, лёгкость, расширяемость, а не историческое подражание клавиатурной хореографии 1976 года. Если vi-like не нравится — ничего не сделаешь с этим. И если novim-mode делает навигацию привычной, то пусть делает. Главное, что я не теряею реальные преимущества: мгновенный старт, предсказуемое поведение, куча модулей, безболезненная работа на любой машине от Raspberry Pi до какого-нибудь старичка ThinkPad.

ChocoRobo
()
Последнее исправление: ChocoRobo (всего исправлений: 1)
Ответ на: комментарий от apterions

автор neovim продвигает идею, что стрелки неудобны

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

bread
()

Есть ли в neovim какие-нибудь красивые интеграции со внешними форматтерами? Понятно, что можно настроить комбинацию на запуск clang-format по хоткею, но вдруг есть что-то более современное? Опять-таки видео от разработчиком neovim с приседаниями вокруг связки lsp+format пугает.

conform.nvim для форматирования после сохранения.

mason.nvim для установки и обновления форматтеров, линтеров и т.д.

Для начала можно попробовать kickstart.nvim.

MoldAndLimeHoney ★★
()
Ответ на: комментарий от apterions

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

Потому что кто-то, в основном, использует ПЭКА с нормальной клавиатурой и стрелки ему, соответственно, удобны.

А кто-то использует только ноутбук со всратыми стрелками и они ему кажутся неудобными.

Тут не авторы ПО или пользователи виноваты, а конченные производители, которые делают всратые клавиатуры.

MoldAndLimeHoney ★★
()
Ответ на: комментарий от bread

Это в документации самого vim’а прописано:

Experienced Vim users often do not use the arrow keys, but use the hjkl keys instead, because they are always right under their fingers.

Конечно сочетание с CTRL будет лучше, т.к. ты не убираешь руки из зоны печати.

Алсо, ещё открытие! Использовать Vim нет НИКАКОГО смысла если не обладаешь слепым десяти пальцевым набором. Или набор надо осилить или не мучить себя.

perl5_guy ★★★★★
()
Последнее исправление: perl5_guy (всего исправлений: 1)
Ответ на: комментарий от apterions

В том и прелесть jkhl и Ctrl-n/Ctrl-p Ты курсов по vim на youtube пересмотрел?

Прелесть в операторах. А если ты прыгаешь между insert/normal mode, чтобы на пару символов передвинуться, у меня для тебя плохие новости: в vscode получалось бы эффективнее.

слепым набором владеть

А, ну я правильно узнал адепта «600-знаков-всякой-фигни-в-минуту».

kawaii_neko ★★★★
() автор топика
Ответ на: комментарий от perl5_guy

Experienced Vim users often do not use the arrow keys, but use the hjkl keys instead, because they are always right under their fingers.

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

bread
()
Ответ на: комментарий от bread

вы каждый раз ломаете мозг, когда ими пользуетесь

Со временем слепая печать работает автоматически, например, спроси меня сейчас, где на клавиатуре буквы 'к', 'д', 'б' - не отвечу, а напечатать без проблем. Тоже самое с перемещением в vim'e. Надо переместиться - перемещаешься, а как уже и не знаешь.

П.С. сам я всё больше по словам перемещаюсь вперёд/назад

Jurik_Phys ★★★★★
()
Последнее исправление: Jurik_Phys (всего исправлений: 1)

Оказывается, все объясняется исключительно историческими причинами:

The original vi editor was created for the ADM-3A terminal, which lacked physical arrow keys. On this terminal, the arrow keys were printed on the hjkl keys

Увлекаться таким в наше время можно исключительно по причине уважения к памяти предков.

kawaii_neko ★★★★
() автор топика
Ответ на: комментарий от bread

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

anonymous
()
Ответ на: комментарий от kawaii_neko

Так это изначально ed-переросток, отсутсвие cua - тоже по наследству досталось. Зачем тогда вим вообще, там кроме памяти предков нет ничего?

anonymous
()