最近になってコード補完プラグインとして試し始めた vim-coc だけれど、これ、実は CtrlP や fzf.vim のようなファイル一覧のあいまい (fuzzy) 検索もできるらしいね。具体的には、vim-coc 用の拡張機能「coc-lists」を追加インストールすれば良い。検索処理自体は ripgrep を使うようなので、機能面でも速度面でも十分なのではないかと期待される。これまで使っていた fzf.vim + fzf + ripgrep のセットアップを代替できるか試すべく、導入してみる。
(2019年12月28日追記。CtrlP や fzf.vim では検索したファイル一覧での Ctrl+X または Ctrl+V で、水平または縦の画面分割でそのファイルを開く機能があるのだけれど、coc-lists では同等機能が無いようで、この一点だけで fzf.vim + fzf + ripgrep の構成に戻すことにした。)
前提環境
- VIM 8.0 以降、または Neovim 0.3.1 以降
- Node.js 実行環境
- yarn もインストールしておく必要あり
- ripgpre (rg) が PATH の通ったディレクトリに配置されていること
vim-coc は TypeScript で書かれているため、利用にあたって Node.js が必要になる。また vim-coc 用の各種拡張機能をビルドするために yarn を使うため、yarn のインストールも必要(npm install -g yarn
でインストールできる)。また coc-lists 自体は、ripgrep による検索処理をフィルタリング・一覧表示するものであるため、rg
コマンドが PATH の通ったディレクトリに配置されている必要もある。
セットアップ
- vim-coc のインストール
- vim-coc 自体は基本的に普通の VIM プラグインなのだけれど、 Typescript 製なのでビルド済みファイル群を格納した branch を 指定するか、ダウンロードと同時にビルドする必要がある。
vim-plug を使っている場合は以下を
.vimrc
に追加 (ビルド済みファイル群を使う例)Plug 'neoclide/coc.nvim', {'tag': '*', 'branch': 'release'}
それ以外のプラグインマネージャを使う場合は公式のインストールガイドを参照
coc-lists のインストール
vim-coc のインストール後、VIM/Neovim 上で以下コマンドを実行
:CocInstall coc-lists
コマンドを登録
- ファイル検索は
:CocList files
で実行可能 Ctrl+P でファイル検索を実行する設定例は:
nnoremap <C-p> :CocList files<CR>
- ファイル検索は
上記でセットアップは完了。.gitignore
や .ignore
も認識してくれて、特に問題は無さそうだ。しばらく使い続けてみよう。
余談:その他の vim-coc 拡張は以下の Wiki ページにまとめられている。