以下の内容はhttps://yaritakunai.hatenablog.com/entry/vim-like-vscodeより取得しました。


VimをVS Codeみたいにする

スポンサーリンク
※当ブログのAmazon、iTunes、サウンドハウス等のリンクはアフィリエイトを利用しています。

Vimのスクリーンショット

VimをIDEというかVS Codeみたいにしたかったんです(語彙力)

一つでそれを実現するプラグインとしてcoc.nvimというものがあるんですが、NeovimにLSP (Language Server Protocol)機能が搭載されてからは、各言語サーバや機能を個別に導入するスタイルが流行りのようです(?)

Vim(Neovimではなく)にLSPや機能ごとのプラグインを導入することに挑戦してみました。

 

vim-plug

プラグインマネージャとしてvim-plugを選びました。以下のコマンドでインストールできます。

curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

プラグインの導入は、.vimrcに以下のように記載します。call plug#begin()call plug#end()の間でPlugコマンドを使います。

call plug#begin()
  Plug 'cocopon/iceberg.vim'
call plug#end()
silent! colorscheme iceberg

こちらはカラースキームのicebergです。あとはVimで:PlugInstallを実行すればプラグインのインストールは完了です。

ちなみに、上記のようにcolorschemeplug#end()の後で読み込むべきだそうです。また、plug#end()を呼ぶと自動的にfiletype plugin indent onsyntax enableが実行されます。

github.com

 

prabirshrestha/vim-lsp

次は、まさにそのLSP機能をVimにもたらすvim-lspです。ただ、導入する言語ごとに煩雑な設定を書く必要があります。そこで、それを自動的にしてくれるvim-lsp-settingsも入れます。

Plug 'prabirshrestha/vim-lsp'
Plug 'mattn/vim-lsp-settings'

github.com

github.com

 

vim-lsp-settingsの使い方

ファイルを開くとFileTypeに応じてインストールの案内を表示してくれます。たとえば、Python用の言語サーバはVim内で以下を実行します。

:LspInstallServer pylsp-all

一覧からインストール、アンインストールを行うこともできます。

:LspManageServers

好みで以下も設定しました(.vimrcに書きます)。上から、E>(エラー)やW>(ウォーニング)といったサインの無効、A>(コードアクション)サインの無効、テキスト領域へのメッセージ表示の無効、代わりにステータスラインへのメッセージ表示を有効にするものです。

let g:lsp_diagnostics_signs_enabled = 0
let g:lsp_document_code_action_signs_enabled = 0
let g:lsp_diagnostics_virtual_text_enabled = 0
let g:lsp_diagnostics_echo_cursor = 1

 

pylsp-allの設定

私の好みでRuffも入れます。vim-lsp-settingsから入れてもよいのですが、これまたpylsp-allと競合するlinter、formatterをすべて無効にしてくれるpython-lsp-ruffをpipでインストールします。

~/.local/share/vim-lsp-settings/servers/pylsp-all/venv/bin/pip install python-lsp-ruff

手動でたとえばpycodestyle、mccabe、pyflakesを無効にするには以下のように設定しなければなりませんが、python-lsp-ruffはこういう設定が必要ありません。

let g:lsp_settings = {
\   'pylsp-all': {
\     'workspace_config': {
\       'pylsp': {
\         'plugins': {
\           'pycodestyle': {
\             'enabled': v:false
\           },
\           'mccabe': {
\             'enabled': v:false
\           },
\           'pyflakes': {
\             'enabled': v:false
\           },
\         }
\       }
\     }
\   },
\}

github.com

 

余談

一度vim-lsp-settingsからruffサーバを入れたのですが、現状(?)g:lsp_settings_filetype_python'ruff'を追加する必要もありました。

また、vim-language-server等ではNode.jsのインストールも必要です。

brew install node

 

prabirshrestha/asyncomplete.vim

オートコンプリート機能にはasyncomplete.vimを入れます。ここまでで十分IDEっぽくなります。

Plug 'prabirshrestha/asyncomplete.vim'
Plug 'prabirshrestha/asyncomplete-lsp.vim'

 

itchyny/lightline.vim

statuslineやtablineをきれいに表示してくれるlightline.vimを入れてみました。lightline-lspはstatuslineにウォーニングやエラーの数を表示してくれます。

Plug 'itchyny/lightline.vim'
Plug 'halkn/lightline-lsp'

設定はREADMEを参考にOKの表示だけ不要なので省きました。

set laststatus=2
set noshowmode
let g:lightline = {
\ 'colorscheme': 'iceberg',
\ 'active': {
\   'right': [ [ 'lsp_errors', 'lsp_warnings', 'lineinfo' ],
\              [ 'percent' ],
\              [ 'fileformat', 'fileencoding', 'filetype' ] ]
\ },
\ 'component_expand': {
\   'lsp_errors':   'lightline_lsp#errors',
\   'lsp_warnings': 'lightline_lsp#warnings',
\ },
\ 'component_type': {
\   'lsp_errors':   'error',
\   'lsp_warnings': 'warning',
\ },
\ }

github.com

github.com

[ 'lsp_errors', 'lsp_warnings', 'lineinfo' ]が画面上、右から並ぶのに[ 'fileformat', 'fileencoding', 'filetype' ]は左から並ぶ理由については、作者のブログをご覧ください。

itchyny.hatenablog.com

 

tpope/vim-commentary

Vimでは少し面倒なコメントアウトをトグルできるようにvim-commentaryを追加しました。VS Codeではcommand + /ですが、vim-commentaryではカーソル行でgcc、選択範囲でgcです。

Plug 'tpope/vim-commentary'

github.com

 

lambdalisue/fern.vim

ファイラーとしてfern.vimを入れました。

Plug 'lambdalisue/fern.vim'

以下でドロワー形式で起動できます。

:Fern . -drawer

github.com

 

おわりに

導入としてはこれくらいでしょうか。Gitとかのプラグインもあるので調べてみてください。細かいキーマップは追い追い設定していこうと思います。




以上の内容はhttps://yaritakunai.hatenablog.com/entry/vim-like-vscodeより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14