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件) を見る