Что: 1ae39d6ffa08741a2564f3e095508ce49b11bf03
Когда: 2020-07-10 18:34:45+03:00
Темы: go python vim
Начал использовать (пробую) LSP https://github.com/prabirshrestha/vim-lsp http://git.stargrave.org/cgit.cgi/dotfiles.git/tree/vim/.vim/plugin/lsp.vim Решил попробовать что же такое Language Server Protocol и будет ли от него какой профит в Vim. Установить оказалось довольно просто: четыре плагина на pure-Vim (+Lua опционально) которые можно просто в pack/ директорию склонировать с Github-а: mkdir -p ~/.vim/pack/lsp/start ; cd ~/.vim/pack/lsp/start git clone https://github.com/prabirshrestha/vim-lsp.git git clone https://github.com/prabirshrestha/asyncomplete.vim.git git clone https://github.com/prabirshrestha/asyncomplete-lsp.vim.git git clone https://github.com/mattn/vim-lsp-settings.git asyncomplete асинхронно позволяет показывать кучу дополнений на основе фунок, модулей, методов и прочего. asyncomplete-lsp нужен чтобы он работал с vim-lsp. А vim-lsp-settings это просто автозапускалка LSP серверов для соответствующих ЯП. Просто добавив эти плагины в автозапуск, всё автоматом уже будет работать. Хотя я всё равно на полэкрана себе настроек поудобнее и привычнее для себя накрутил. Какой профит? Как минимум пока профит вижу только в том, чтобы во время набора текста он мне показывал сигнатуры фунок в виде balloon-а. Возможно где-то оно будет мешать, но пока вроде прям явно пользу приносит. Надо поработать с этим прилично времени чтобы понять. Для Python установил python-language-server: работает медленно, но хотя бы явно кэширует результаты работы. То есть приходится ждать многие действия. Но это всё асинхронно происходит, поэтому: раньше я просто не видел доки/сигнатур, а теперь, пусть не мгновенно, но увижу. Плюс какой-то lint делает и подсвечивает явно косячный синтаксис, который прежде я бы только отдельно запуская отловил бы. Как минимум, это не flake8/pylint запускаемые при сохранении изменённого файла и всё же работает существенно быстрее хотя бы для проверки синтаксиса. В общем удобство есть. Goto definition работает. Но медленно. Если нужно прыгнуть куда-то что не покрыто ctags -- профит есть. В противном случае ctags тупо моментальнее работают. Для Go сделал go get golang.org/x/tools/gopls. И после открытия в Vim-е .go файла, он автоматом запускает этого демона. Всё тоже работает, приятно что хотя бы сразу проверяет синтаксис. Причём, все показы доки и автодополнения выполняются буквально мгновенно. Я не замечаю тормозов вообще. Goto definition тоже моментальный. Для C, как оказалось, из коробки LLVM/Clang есть clangd. Как минимум, опять же, приятно показывает сигнатуры и корявый синтаксис или например то, что я возвращаю другой тип данных в функе, отличающийся от того что я написал. Вот правда goto definition в половине случаев срабатывает, а в половине нет. Лень с ходу разбираться с чем это связано, но он даже импорт <PCSC/...> не находит из коробки. Но, опять же, не страшно, профит всё равно есть. Однако на C (clangd) тормоза во многих местах всё же имеются, иногда даже похуже чем у Python. Но возможно это связано с проектом более большим. В общем, установка проста, pure vimscript (а не этот, судя по Интернету, популярный https://github.com/neoclide/coc.nvim который в README мне сразу говорит чтобы я ставил NodeJS (да пошёл ты в жопу!)), профит от быстрой real-time проверки синтаксиса и показа док/сигнатур имеется. Пока я считаю что оно всё стоит того.
Сгенерирован: SGBlog 0.34.0