皆さん今日もバリバリ開発していますか?毎日のように使う開発ツールってすごく大事ですよね。エンジニアに限らず、普段から自分が使う道具を磨いておくというのはとても大事だと思います。ちなみに普段はTerminal.app + tmux + vimという構成で開発をしています。
台湾で花粉を避けながら仕事をすることで、開発効率をアップするというハックを実践中の旅しているエンジニアの三宅です。
先日15年目のVim | POSTDという記事を見かけて、おおこれは面白そうだということで、これを機に少し開発環境の改善を図りたいと思います。
今回改善したい内容は以下の2点になります。
- vimで新たにファイルを開く時、階層を辿っていかないといけない
- vimからキーワード検索してファイルを開きたい
vimで新たにファイルを開く時、階層を辿っていかないといけない
新たにファイルを開くときにはunite.vim + vimfilerで階層を掘っていって開いているのですが、それだとルートディレクトリから該当ファイルまでの位置を入力しないといけないので面倒だなぁと思っていました。
そこで先の記事にもあったfzf.vimを試してみることにします。
まずはhomebrew経由でfzfをインストールします。
$ brew install fzf
次にvimからfzfを呼び出すことができるようになるプラグインであるfzf.vimをインストール、設定します。
NeoBundle 'junegunn/fzf.vim'
set rtp+=/usr/local/opt/fzf
nmap ; :Buffers<CR>
nmap t :Files<CR>
nmap r :Tags<CR>
これでvimからfzf介してfuzzy検索ができるようになりました。階層を掘っていく必要もなく、雑な感じで検索しても必要なファイルが引っかかってくるので便利そうです。
vimからキーワード検索してファイルを開きたい
特定のキーワードで検索してマッチしたファイルを開きたいことがあるのですが、今までは一旦vimを離れてgrepして該当のファイルを調べて開くようなことをしていました。
毎回vimを離れるのは面倒なので、vim内で完結するようにしてみたいと思います。
またまた先の記事を参考にack.vimを使う導入してみたいと思います。
ack.vim自体はack, agをvim上で利用できるようにするプラグインなので、まずはag自体をインストールしたいと思います。
$ brew install ag
ちなみに先の記事に書かれているのですが、
agは新たなackです。ackは新たなgrepでした。
ということらしいです。
次にack.vimをインストール、設定します。
NeoBundle 'mileszs/ack.vim'
nmap [q :cnext<CR>
nmap ]q :cprev<CR>
ack.vimからagを利用するには実行ファイルを指定して上げる必要があるので、以下の設定も追加します。
if executable('ag')
let g:ackprg = 'ag --vimgrep'
endif
Can I use ag (The Silver Searcher) with this?
これでvimから快適にキーワード検索して該当のファイルを開くことができるようになりました。
キーバインドなどは記事のとおりに設定しただけなので、使いながら自分が使いやすいように調整していきたいと思います。
Appendix
改善というほどではないかもしれませんが、先の記事で紹介されていたvim-gitgutterも導入してみることにします。
編集しながら変更内容が見れるので便利そうです。READMEでupdatetimeを減らすことが提案されていたのでそれに習います。
NeoBundle 'airblade/vim-gitgutter'
set updatetime=100
aleのlint結果と被って隠れてしまうことがあるのですが、変更点がひと目で分かるので地味に便利です。
まとめ
毎回使う道具だからこそ常日頃から磨いておくことが大切だと思います。
普段から定型的な作業は自動化できないか、繰り返し実行する作業は効率化できないかということを考え改善することで、全体的な生産性向上につながります。
皆さんも快適な環境を作ってバリバリ開発しましょう!