ranger

Sun, Sep 2, 2018

ranger-explorer.vimをアップデートした

ranger-explorer.vimというVimプラグインをアップデートした。 このアップデートでranger上の操作でVimのタブで開くか画面分割して開くかを選択できるようにした。 (あとNeovimもサポートした) ranger-explorer.vim https://github.com/iberianpig/ranger-explorer.vim Vimのファイラのrangerに置き換えるVimプラグイン。 Vimからrangerでカレントディレクトリを開いたり、プロジェクトルートのディレクトリを開いたりできる。 また、Vimのプロセスがネストせず、rangerの親プロセスのVimで開くようにしているのでbufferを共有することが出来る。(これが!rangerで開いた時との違い) 今回のアップデートでは rangerから Vimのタブや画面分割で開いたり出来るようにしている。 ranger rangerはCLIベースの高機能ファイラで、コマンドラインから操作できる。 hjklの移動、yyのヤンク、ddのカット、pのペーストなどVimライクな操作や、コマンドラインでの:rename、:touchなどの操作がサポートされている。 特に高速なライブプレビューが気に入っており、これだけでrangerを選択するモチベーションになっている。 rangerからタブ/画面分割で開く ranger-explorerからrangerを開いた時、Vimを開くキーバインドがrangerに自動で定義されるようにした。 <Ctrl-o>: 現在のタブ上で開く <Ctrl-t>: 新しいタブで開く <Ctrl-v>: 画面を垂直に分割して開く <Ctrl-s>: 画面を水平に分割して開く このようにrangerから分割して開くことが出来る。 動的にrangerへキーバインドを注入しているので、CLIからrangerを開いた時はこれらのキーバインドは使えず、ranger-explorerから開いた時のみタブや画面分割が出来るようになる。 また、動的にアサインするキーバインドは ~/.vimrc で下記のように上書きできる。 let g:ranger_explorer_keymap_edit = '<C-o>'let g:ranger_explorer_keymap_tabedit = '<C-t>'let g:ranger_explorer_keymap_split = '<C-s>'let g:ranger_explorer_keymap_vsplit = '<C-v>'得意なツールに任せる 無理に全てVimプラグインで頑張るよりも得意なツールを使えば良いと考えていて、 今回の場合はディレクトリ構造を扱うのが適したツールのrangerに任せている。 特にファイルを開いたり、検索する部分は外部のCLIツールを利用している。 fzf.vim ファイル名をあいまい検索(fuzzy-finder) ranger-explorer.vim ディレクトリ階層からファイルを選択 tig-explorer.vim tigでGitの履歴から、git grepからファイルを開く どれもプレビューが高速なツールなのでVimからファイルを探すワークフローが快適になった。 異なるツールの操作に一貫性を持たせる Vimに外部ツールを利用する場合はパフォーマンスの利点もあるが、普段から使い慣れているツールを扱えるということが利点。 しかし、当然ながらツール毎に細かいキーバインドが異なる。同じ機能は同じキーバインドで扱えるようにしたいと思っていた。 そこで、fzfや以前愛用していたvimfiler/ctrlpと同様の使い勝手が欲しくて、<C-o>、<C-t>、<C-v>、<C-s>のキーバインドでタブや画面分割して開けるようにした。 プラグイン側からキーバインドを動的に設定するアイデアは、tig-explorerにも取り込んでいる。