Tech Racho エンジニアの「?」を「!」に。
  • 開発

Vimでよく使うプラグインの操作まとめ(Git, 検索, ファイル, スニペット)

私は使えるものはなんでも使えという性分なので、Vim (Neovim) でも多くのプラグインを使っています。

普段から使うVimのプラグインの操作は慣れてしまっているが .vimrc (init.vim) を見てもわからず、慣れるまで覚えるのが大変なので特によく使うやつだけ整理しておきます。

今回は下記の操作とプラグインについて。

Git操作

ステータス画面を開く

:Gstatus を実行するとステータスウィンドウが開きます。よく使うのでキーバインド設定推奨。
ステータスウィンドウでファイルにカーソルを合わせて下記の操作を行う。

-
git ステージング切り替え
=
ウィンドウ内に差分を表示
D
diffウィンドウを並べて出してくれる
cc
コミット
(コミットログ書き込みウィンドウが出るので書いたら :wq とかで保存終了する)

たまに使うやつ

:Gblame
行ごとに変更日時とか変更者とかを確認する
:Gread
今開いてるファイルを最新のcommitの状態に戻す

あいまい検索

よく使うコマンド

:GFiles
リポジトリ内ファイルパスのあいまい検索
:History
履歴からファイルパスあいまい検索
:Buffers
バッファのあいまい検索

キーバインド設定推奨。

自作コマンド

:Rg
リポジトリ内でripgrepによる検索(自前で設定)。
検索中に絞り込んでからプレビューウィンドウで周辺コンテキストを見られる。

キーバインド設定推奨。

if executable('rg')
    command! -bang -nargs=* Rg
        \ call fzf#vim#grep(
        \   'rg --line-number --no-heading '.shellescape(<q-args>), 0,
        \   fzf#vim#with_preview({'options': '--exact --reverse --delimiter : --nth 3..'}, 'up:50%:wrap'))
endif

ripgrepをインストールしておきましょう。

ファイル選択した状態での操作

Ctrl x
上下分割で開く
Ctrl v
左右分割で開く
Ctrl t
新規タブで開く
Enter
今のウィンドウで開く

ファイル操作

ファイラを開くコマンドはキーバインド設定推奨

:NERDTreeFind
今のファイル選択した状態でファイラを開く
:NERDTreeToggle
ファイラの開閉切り替え

ファイラのバッファでの操作

m
操作メニューを開く
(ファイル追加・削除・移動(リネーム)・コピー、Finderで開く、関連アプリで開く、プレビューで開く、など)
o
直前のウィンドウで開く
t T
新規タブで開く
i
上下分割で開く
s
左右分割で開く
I
ドットファイル表示切り替え
u U
1階層上に移動
C
カレントディレクトリを切り替え
x X
ディレクトリを閉じる
?
キーバインド表示切り替え

スニペット操作

デフォルトのスニペットとして honza/vim-snippets あたりも入れておく。

スニペット挿入のキーバインドは設定できる。

" UltiSnips スニペット展開
let g:UltiSnipsExpandTrigger="<c-k>"
" UltiSnips スニペット次の位置に移動
let g:UltiSnipsJumpForwardTrigger="<c-j>"
" UltiSnips スニペット前の位置に戻る
let g:UltiSnipsJumpBackwardTrigger="<c-z>"

自作スニペットの登録方法

~/.vim/snippets 以下に置きたい場合、下記の設定をしておく。

" 自作スニペット
let g:UltiSnipsSnippetsDir = '~/.vim/snippets'
set runtimepath+=~/.vim/snippets

filetypeをファイル名にしたsnippetファイルを作成する。
rubyのスニペットを作る場合、~/.vim/snippets/UltiSnips/ruby.snippets を作成する。

snippet hello "hello world"
puts 'Hello, ${1:world}'
endsnippet

例としてruby.snippetsにて上記の設定を記述すると、rubyのファイルでhelloと入力し Ctrl k を押すことでスニペットを展開できる。

おまけ

neovimからプロジェクト間を移動したいという友人のために作った :Ghq コマンド。
リポジトリをfzfであいまい検索して飛んだ直後にファイル検索が開く。

function! CdFind(dir)
  cd `=a:dir`
  edit `=a:dir`
  GFiles
  call feedkeys('i', 'n')
endfunction

if executable('ghq')
  command! -bang -nargs=0 Ghq
    \ call fzf#run({
    \   'source': 'ghq list --full-path',
    \   'sink': function('CdFind')})
endif

関連記事

モダンな開発用ターミナル環境のためのツール紹介

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。