Pull to refresh

Comments 41

так а какие возможности IDE (не редактора, а именно среды) покрываются то? Притом что NVim сам не IDE, а редактор.

Я сам вимер со стажем, но делать из него IDE полноценно никогда не приходилось, да и незачем

навигация по коду (я имею ввиду методы, имплементации интерфейсов и т.д.), автокомплит, поиск по проекту и тд что я описывал в тексте. А что вы имеете ввиду под "полноценно"?

А в каком IDE Вы не нашли автокомплит и навигацию?

Про полноценно, например git руками в соседней вкладке терминала. Из vim максимум git blame удобно делать, остальное как-то не попадалось или никак не ускоряло процесс

Git в соседней вкладке https://github.com/TimUntersberger/neogit Я использую этот плагин. Можно еще вызывать https://github.com/jesseduffield/lazygit в окне терминала как это делаю я https://github.com/antgubarev/dotfiles/blob/master/nvim/lua/user/git.lua#L75
Жаль что вы доклад не посмотрели перед тем как комментировать, где я про это тоже упоминал. Также как и про то, что в сравнении с IDEA возможностей по удобству работы с git меньше.
Но для меня ценно именно возможность выбирать инструменты и настраивать как мне больше удобно. Я до этого сидел много лет на JB и сейчас неудобств для себя не испытаваю а скорее наоборот.
Но это все вопрос личных предпочтений) Я не убеждаю никого, а только делюсь собственным опытом)

так а что такого трудного в поддержке гита?

Редактирование кода это одно, но мне интереснее как неоВим поможет мне (или хотя бы может заменить) с дебагом своего и декомпиляцией чужого кода (step Into) - именно в этом блистают IDE от того же джетбрейнса.

для дебага на go я использую delve. Тот же самый что используется в VSCode, мне этого хватает. Брейкпоинты, стектрейсы, вотчинг переменных и прочее.

UFO just landed and posted this here

i

Вим просто создан для разработки.

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

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

Однако, нужно хорошо уметь настраивать эту среду, для того чтобы она стала действительно удобной.

Отдельно хочется отметить пользу команды :vimtutor которая позволяет быстро освоить азы.

Cпасибо вам за то что делитесь опытом и рассказываете про VIM.

~ESC~ESC~:wq

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

мне вначале это тоже показалось неудобным. Однако спустя некторые время я с неохотой пользуюсь стрелками в других программах где нет vim-mode) Но наверное индивидуально это)

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

Это как переходить с bash на cmd и обратно.

Поддерживаю, насчёт hjkl, для меня это не сработало, несмотря на много лет попыток пересесть со стрелок (после Sublime).

Зато (вероятно из-за детства в шутерах) стало нереально удобно, когда я перебиндил навигацию на wasd, настолько, что даже во всяких vimium'ах, tmux'ах и прочем добре я потом сделал также.

Из недостатков — теряется часть дефолтных хоткеев и их тоже нужно перебиндить, но ИМХО, того стоит.

WASD это больше чтобы перенести управление с правой руки на левую дабы освободить руку под мышь, а hjkl это прям совсем другое управление. Мизинец - лево, Указательный - право, Средний - Верх, Безымянный Вниз. ... И тут мозгу приходится перестроиться с привычных движений безымянного пальца - выше вверх, ниже вниз.

В Neovim :vimtutor не работает из коробки (по крайней мере в сборке на Ubuntu из ppa:neovim-ppa/stable). Чтобы его пройти используйте :Tutor или :help nvim

Пока вам из всех инструментов IDE нужны только возможности текстового редактора, vim'а вполне хватает. Но вот как только вам потребуется, к примеру, сделать рефакторинг, даже самый простейший (банально переименовать метод одного из классов по всему проекту), вот тут окажется, что IDE всё-таки нужна.

Рефакторинг ( так же как и автокомплит, форматирование, и многое другое) предоставляется не самим nvim , а LSP сервером. Если nvim и , скажем, vscode используют одинаковый LSP сервер, они представляют идентичные возможности рефакторинга. Скажем nvim с RA в качествеLSP сервера позволяет вам "банально переименовать метод одного из классов по всему проекту". (С учётом того, конечно, что в расте вместо классов структуры)

Все возможности рефакторинга в Vim представлены точно также как в популярных IDE. Даже больше скажу. Под капотом например тот же самый VSCode использует для этих целей тот же самый инструмент - LSP

Интересная, мотивирующая статья. Спасибо.
Вот бы такую же, но про emacs.

Ожидал, что будет именно про NeoVim, точнее чем он отличается от Vim. А тут в кучу и про Vim и про NeoVim, по ходу, всё свалено, добавляя непонимания. Меж ними-то разница явно есть. Пример: "SpaceVim is a distribution of the Vim editor", то есть SpaceVim - это именно Vim, и к NeoVim(который в заголовке) отношения не имеет. Начиная с Vim 9.x разница меж редакторами ещё больше увеличивается, ибо как я понял, в планах автором NeoVim нет поддержки нового скрипта VimL 9. То есть, плагины авторов на VimL9 в NeoVim не заработают, о чём хорошо бы знать пользователям NeoVim.

Так что, вы либо уточните, что пост про оба редактора Vim и NeoVim, либо уж следите, чтобы информация была релевантной заголовку.

В самом начале статьи я как раз упомянул о том что есть еще Vim и что NeoVim это ответвление. Насчет плагинов старых, которые могут отвалиться. Я для себя использую все меньше плагинов на VimScript так как под NeoVim появляются более удобные альтернативы. Пока еще не все можно заменить, но если вдруг поддержка и исчезнет, то это точно не станет критичным.

Извините, при чтении тот абзац как-то пропустил. В любом случае, от статьи с таким заголовком, лично я ждал именно объяснения почему именно NeoVim. А в итоге потратил время на пролистывание описания базовых возможностей редактора (применимо и к Vim, и к NeoVim, и, подозреваю, даже к плагинам, что включают Vim-режим в других редаторах типа VSCode).

Вы видимо очень невнимательно пролистывали) Базовые возможности редактора это только редактирование, я же рассказал в том числе и про плагины. Кстати Telescope это только для NeoVim. Также как и Nvim-tree, gitsign, diffview. А также примеры конфигурации на Lua. А если бы вы еще доклад посмотрели, по которому написана эта статья, то там еще больше информации о разнице между vim и nvim)

Да, я выразился не однозначно. Я не хотел сказать, что в статье ничего нет про NeoVim и что именно в нём хорошего. :) Просто, начало не отвечало на вопрос из заголовка статьи и читать подробно уже не очень хотелось. Первый раздел про буфера, второй - про клавиатурные команды. Всё это есть, наверное, почти в каждом втором, а то и первом обзоре "Что такое Vim/NeoVim". Примерно четверть статьи прошло, а всё ещё базовая информация. Внимание теряется и далее уже смотришь очень по диагонали. Хотя, далее уже про конфигурацию, где уже проглядывает NeoVim, ибо Lua во врезке. LSP вроде тоже в NeoVim появился поначалу, а как там в Vim в ним - не знаю. Разве что в плагинах снова информация частично становится универсальной Vim/NeoVim. Не скажу, что плохо, но ответ на вопрос "Чего ждать именно от neoVim?" не очень проглядывает.

Хотел бы ещё дополнить информацию в статье тем, что вроде как NeoVim внедряет усиленно TreeSitter в качестве парсера синтаксиса для более точной раскраски разных языковых конструкций(взамен текущего движка на регулярках). Так что, кому это важно должны обратить внимание на цветовые схемы, которые поддерживают TreeSitter. Схемы можно поискать тут: https://vimcolorschemes.com/

Тут, кстати, вопрос: если вы так любите Lua, почему тогда VimPlug? Я в итоге перешёл на Packer(собрался с мыслями и месяца 2 назад это сделал). Причём, мне показалось, что переход на него был сложнее, чем начать использовать VimPlug - есть свои подводные камни. Тут целую статью написать можно, как Packer использовать.

LSP вроде тоже в NeoVim появился поначалу, а как там в Vim в ним - не знаю.

На уровне голого Vim - никак, как и должно быть. А плагины разные LSP поддерживают, конечно. По крайней мере vim-go поддерживает точно.

Долгое время я пользовался IDE от JetBrains, затем пересел на VS Code. Последние несколько лет работаю с кодом только в NeoVim

Ждем дальнейшего перехода на виндовый блокнот, а потом и на ручное набивание перфокарт

Вот зря вы так, у них у всех есть свои преимущества и недостатки. Я сейчас на довольно большом проекте успешно использую и Rider, и VS Code, потому что VS Code фигово справляется с поддержкой больших MSBuild-солюшенов со смесью C#/C++ проектов, а Райдер фигово справляется с задачами, когда нужно быстренько поискать что-то по всему репозиторию (особенно когда вне активного солюшена) и посмотреть историю отдельных файлов.

Единственный реальный недостаток Vim по сравнению с IDE - необходимость его настраивать под себя, и довольно долго. (Нет, взять чужой конфиг не работает - точнее, это отлично работает как начальная точка, но рано или поздно всё-равно приходится донастраивать под себя.) Но, с моей точки зрения, для разработчиков - это правильное и продуктивное вложение времени, потому что мы в этом редакторе проведём очень много лет, и разные мелкие удобства успеют окупить время на их настройку. Да и просто прикольно это - программистам программировать собственный текстовый редактор. :)

В остальном - полезные фичи IDE без особых проблем реализуются (как правило - не лично вами, готовых плагинов просто море) в Vim, причём в гораздо более гибком/настраиваемом виде, что даёт возможность не просто использовать их "как в IDE", а делать это более удобным лично для себя способом… а вот гибкости Vim ни в какой IDE никогда не будет. А гибкость Vim довольно важна, потому что нам нередко нужно работать не только с теми типами файлов и не только теми способами, которые поддерживает конкретная IDE (просто интересно, все IDE уже научились открывать файлы размером в гигабайт с каким-нибудь дампом SQL или логом и эффективно с ним работать?). Так что "умея в Vim" мы получаем заметный бонус в виде возможности одинаково работать с любыми текстовыми файлами.

Что до hjkl или стрелочек и прочих хитрых последовательностей команд - каждый осваивает это в том объёме, в котором ему комфортно. Я вот лично пользуюсь стрелочками (а ещё Shift+стрелочками и Ctrl+стрелочками!), и совершенно не стесняюсь этого. При этом я написал несколько плагинов к vim, выложил собственный довольно навороченный и прокомментированный конфиг vim на гитхаб, и пользуюсь морем других продвинутых команд и возможностей vim уже примерно лет 15-20.

Ещё один интересный момент: кто может похвастаться тем, что за 20 лет не разу не менял любимую IDE и не был вынужден тратить время на привыкание к новым IDE/версиям/фичам? А Vim спустя 20 лет почти не изменился, сформированные 20 лет назад привычки всё ещё работают, и ещё долго будут работать.

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

Единственный реальный недостаток Vim по сравнению с IDE - необходимость его настраивать под себя

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

Отсюда и простой вывод: для профессионалов VIM, да и EMACS - это швейцарские ножи. Для простых людей - бред, суваться в это можно только любопытства ради, если оно есть. В целом это во всех IT сферах так, да и не только в IT. Рюшечки, симпатичности, TTF шрифты - это всё для нормальных людей :-D.

Я 20 лет в VIM (ну, теперь уже, в nVIM) и я всё ещё продолжаю его настраивать :-D. Интересно даже как я буду пользоваться им ещё через 20 лет... ))). Но это билет в один конец - слезть с этой иглы уже невозможно в принципе.

Очень долго я держался за UI дебаггеры, открывал IDE вместо VIM-а в совсем сложных случаях. Но лет 10 назад я в обычном gdb внезапно начал чувствовать себя как рыба в воде, хотя изначально казалось что это просто какая-то бредовая неюзабельная консольная хрень.

Удалить слово под курсором (delete in word) - diw (не div).

Допустим, нужно найти все foo в коде и заменить их на bar. При этом перед каждой заменой спрашивать подтверждение. Команда для этого:
:s/foo/bar/gc
Немного поправлю. Такая замена с использованием просто s сделает замену только в текущей строчке. Для замены во всём файле (без подтверждения) нужно использовать %:
:%s/foo/bar/g

Также очень интересна особенность использования этой команды без g:
:4,27s/foo/bar/
Здесь для строчек с 4 по 27 делается замена только первого вхождения в каждой строчке. Порой, это крайне полезно.

Далее, для плавного вхождения в Vim режимы, можно использовать плагины для «больших» IDE сред. В частности сам постоянно использую плагины VsVim для Visual Studio и IdeaVim для PyChаrm. Для меня было бы больно использовать редакторы без таких режимов, но к счастью этой проблемы давно не существует.

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

Я пробовал использовать vimmode в больших IDE, но мне не зашло. Там этот режим дает преимущества только при редактировании текста, а если надо в normal mode например запустить тест под курсором или curl запрос отправить в терминал, то вот тут уже преимуществ нет. Поэтому для меня vimmode не стал заменой вима.

лично для меня блокер от использования любых графических IDE - это даже не хоткеи (в современных тоже всё настраивается налево и направо и можно сделать кальку VIM-а уже).

основной трабл - это "консоль далеко". Без тайлинга и кучи консолей я вообще не представляю как жить.

взял тему из вашего списка, но при переключении меняется тема только у строки состояния, основное окно без изменений, можете посмотреть конфиг, я как слепой котенок тыкаюсь куда то наугад))
https://gitflic.ru/project/dartmitai/neovim

Если планируете дальше продолжать тему, можно попросить вас написать про эти плагины
Plug 'L3MON4D3/LuaSnip'
Plug 'saadparwaiz1/cmp_luasnip'
Plug 'rafamadriz/friendly-snippets'

Ребята, объясните мне всё-таки - почему vim? Это добро создавалось на самой-самой заре компьютерных технологий, когда решения в области построения пользовательский интерфейсов нащупывались с трудом и в слепую. Интерфейс VIM - отражение тех тяжелых времён. Отличный пример - мемный выход из vim'а.

Однако с тех пор мысль в этом направлении шагнула очень далеко вперёд.

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

все просто, он АЧЕШУЕННЫЙ
пысы ну и да выход вполне логичный :q = quit

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

впервые слышу о такого рода ошибках. Код вимеров не отличить от кода, написанного например на продуктах от JetBrains.

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

P.S. Я перешел на вим как раз с продуктов от JetBrains и VsCode. Несколько раз пытался вернуться обратно, но каждый раз не покидало ощущение недостаточности. Вим я настраиваю под себя в чем мне хочется, а не только в том, что разработчики дали настраивать. Кому-то хватает гибкости VSCode, мне - нет. Работать на клавиатуре в слепую и без мыши для меня одно удовольствие, которое другие IDE мне дать не могут. Тесная интеграция с множеством других консольных утилит (tmux, lf, zsh, etc), и возможностями которые они предоставляют ни одна IDE мне не заменит.

напиши про Lazy.nvim он классный

Only those users with full accounts are able to leave comments. Log in, please.