Vimメモ : Neovimで開発環境を段階的に構築する(3)あいまい検索とGit連携
あいまい検索
ファイルを開くときや検索するときにあいまい検索ができると作業効率が上がるのでインストールしてみる。
以下のようなプラグインがあるがfzfが人気のようだ。
| Repository | スター数 |
|---|---|
| junegunn/fzf | 23011 |
| junegunn/fzf.vim | 3715 |
| ctrlpvim/ctrlp.vim | 3937 |
| wincent/command-t | 2323 |
| Shougo/denite.nvim | 1437 |
fzfがコマンドラインでも使えるコマンド本体でfzf.vimがvimとの連携プラグインなので両方インストールする。
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } Plug 'junegunn/fzf.vim'
インストール後に:help fzf-vim-commandsを実行すると使用可能になったコマンドの一覧が確認できる。
-----------------+-----------------------------------------------------------------------
Command | List
-----------------+-----------------------------------------------------------------------
Files [PATH] | Files (similar to :FZF )
GFiles [OPTS] | Git files ( git ls-files )
GFiles? | Git files ( git status )
Buffers | Open buffers
Colors | Color schemes
Ag [PATTERN] | {ag}{6} search result ( ALT-A to select all, ALT-D to deselect all)
Rg [PATTERN] | {rg}{7} search result ( ALT-A to select all, ALT-D to deselect all)
Lines [QUERY] | Lines in loaded buffers
BLines [QUERY] | Lines in the current buffer
Tags [QUERY] | Tags in the project ( ctags -R )
BTags [QUERY] | Tags in the current buffer
Marks | Marks
Windows | Windows
Locate PATTERN | locate command output
History | v:oldfiles and open buffers
History: | Command history
History/ | Search history
Snippets | Snippets ({UltiSnips}{8})
Commits | Git commits (requires {fugitive.vim}{9})
BCommits | Git commits for the current buffer
Commands | Commands
Maps | Normal mode mappings
Helptags | Help tags [1]
Filetypes | File types
-----------------+-----------------------------------------------------------------------
例えば:Filesを実行するとカレントディレクトリ以下のファイルをあいまい検索で絞り込みながら選択できる。

ripgrep(rgコマンド)を使っているのであれば:Rgによりあいまい検索ができる。

他にも:Historyを実行すると過去に開いたファイルを検索できるので、以下のようなキーマッピングを追加することでファイルの切り替えが簡単になる。
nmap <C-p> :History<CR>
より詳細な使い方は下記記事を参照。
また、以下のプラグインをインストールするとカレントディレクトリをプロジェクトのルートディレクトリ(例えば.gitがあるディレクトリ)に自動で変更してくれるので検索が便利になる。
| Repository | スター数 |
|---|---|
| airblade/vim-rooter | 585 |
Plug 'airblade/vim-rooter'
Git連携
Git連携できるプラグインとしてvim-fugitiveがあり、コミットブラウザに特化したgitvやgv.vimといった拡張的なプラグインもある。
| Repository | スター数 |
|---|---|
| tpope/vim-fugitive | 11184 |
| gregsexton/gitv | 909 |
| junegunn/gv.vim | 643 |
下記行を追加してvim-fugitiveをインストールすると:Gblameや:GdiffsplitなどGで始まるgitコマンドが使えるようになる。
Plug 'tpope/vim-fugitive'
:Gblameの例。

:Gdiffsplitの例。

Git差分表示
行単位の差分を左端に表示するプラグインとして以下のものがある。
| Repository | スター数 |
|---|---|
| airblade/vim-gitgutter | 5764 |
| mhinz/vim-signify | 1670 |
今回はvim-gitgutterをインストールしてみる。
Plug 'airblade/vim-gitgutter'
インストールが成功していれば差分に応じて+, -, ~といったシンボルが左端に表示される。

デフォルトでは変更の反映までに4秒(4000ms)かかるので以下のように短く設定するのがよい。
set updatetime=100
ファイル単位での差分を表示したい場合はNERDTreeの拡張プラグインをインストールするのがよい。
| Repository | スター数 |
|---|---|
| xuyuanp/nerdtree-git-plugin | 1336 |
Plug 'xuyuanp/nerdtree-git-plugin', { 'on': 'NERDTreeToggle' }

まとめ
今回の~/.config/nvim/init.vim。
call plug#begin('~/.vim/plugged') Plug 'joshdick/onedark.vim' Plug 'itchyny/lightline.vim' Plug 'ntpeters/vim-better-whitespace' Plug 'Yggdroot/indentLine' Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } Plug 'majutsushi/tagbar', { 'on': 'TagbarToggle' } Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } Plug 'junegunn/fzf.vim' Plug 'airblade/vim-rooter' Plug 'tpope/vim-fugitive' Plug 'airblade/vim-gitgutter' Plug 'xuyuanp/nerdtree-git-plugin', { 'on': 'NERDTreeToggle' } call plug#end() set number set termguicolors " airblade/vim-gitgutter set updatetime=100 let g:python_host_prog = $HOME . '/.pyenv/versions/neovim2/bin/python' let g:python3_host_prog = $HOME . '/.pyenv/versions/neovim3/bin/python' " joshdick/onedark.vim colorscheme onedark " itchyny/lightline.vim let g:lightline = {'colorscheme': 'onedark'} " scrooloose/nerdtree nmap <C-e> :NERDTreeToggle<CR> " majutsushi/tagbar nmap <F8> :TagbarToggle<CR> " junegunn/fzf.vim nmap <C-p> :History<CR>

- 作者: DrewNeil,新丈径
- 出版社/メーカー: 角川アスキー総合研究所
- 発売日: 2014/01/28
- メディア: Kindle版
- この商品を含むブログ (4件) を見る