Можно ли использовать движок языка-сервера-протокола VSCode вместе с Vim или NeoVim?

Я пробовал различные механизмы и инструменты анализа кода (например, tern_for_vim) для Vim, но они не предоставляют такие отличные функции автодополнения, перехода и переименования, как в VSCode. Насколько я знаю, VSCode использует технологию языковой сервер-протокол для обеспечения функциональности IDE. Вот мой вопрос:

Можно ли использовать механизм языка-сервера-протокола VSCode внутри Vim или NeoVim? Другими словами, возможно ли обеспечить такое же хорошее качество IDE-подобной функциональности, как и VSCode?

Я попробовал javascript-typescript-langserver с deoplete.vim, но качество автодополнения и объявления перехода было плохим.


person semanser    schedule 07.01.2018    source источник
comment
На данный момент Neovim или Vim очень хорошо справляются с автозаполнением Typescript, но не с Javascript. Жду, пока кто-нибудь подскажет решение. Самое близкое, что я получил, это использовать LanguageClient-neovim вместе с javascript-typescript-server, и это очень медленно, иногда даже не работает. почти непригоден. Я не знаю, использую ли я это неправильно, но это почти не работает.   -  person Eskinder    schedule 18.11.2018


Ответы (2)


Да, вы можете использовать его, установив coc.nvim, который является форком VSCode. Затем вы применяете один из его пакетов для определенного языка, например, coc-python.

Это установка руководство для coc.nvim. Затем вам нужно установить языковой пакет с помощью этой команды в (Neo)Vim:

:CocInstall coc-python

Затем вы можете сразу же использовать механизм завершения кода VS по умолчанию (jedi) или обновить его до того, что станет его преемником, MSPLS:

Для MSPLS запустите команду :CocConfig и введите ее в открытый файл:

{
    "python.jediEnabled": false
}

Затем запустите :CocRestart

Существуют и другие движки, такие как coc.nvim, такие как YouCompleteMe. Все они имеют небольшие вариации/пошив под конкретные языки.

person Noel Evans    schedule 31.05.2020

Теоретически да. http://langserver.org/ содержит список подключаемых модулей редактора и реализаций языкового сервера.

С такими пакетами, как https://github.com/autozimu/LanguageClient-neovim (для neovim, есть другие как для vim, так и для neovim) вы можете использовать языковые серверы в neovim.

Однако некоторые реализации привязаны к тому, как это работает в vscode (например, haxe lsp), поэтому может быть немного сложно заставить его работать. Javascript должен быть лучше интегрирован, но я сам не пробовал.

person kLabz    schedule 07.01.2018