筆者は長らくターミナル上で開発していましたが、Atomの登場以来これをメインエディタとして利用してきました。 ただ、やはりターミナルには「コマンドラインとのコンテキストを変えることなくコーディングができる」などの魅力があり、結局ターミナルに戻ってきました。
この記事では、Atomに慣れた開発者でも快適に作業できる開発環境を構築するためのVimプラグインを紹介します。
動作環境
この記事ではVimプラグインに限定して紹介しますが、動作確認におけるその周辺ツールの各バージョンは次のとおりとなっています。
- iTerm 3.0.4
- Zsh 5.0.8
- tmux 2.2
- Vim 7.4
スクリーンショット
参考までに、筆者の開発環境のスクリーンショットを示します。
筆者は普段Railsアプリケーションの開発を行なっており、左上領域でVim、その下でrails cを立ち上げています。
また、右側は上にコマンド操作の汎用スペース、その下にrails sでログを流しています。
Vimのおすすめプラグイン
それでは、おすすめのVimプラグインを、リンクと概要をまじえて紹介します。
各Vimプラグインにおいて、筆者が別途行なっている設定などがある場合は、あわせて示しています。 設定の際の参考にしてください。
scrooloose/nerdtree
ツリー型エクスプローラ。 ファイルを開いたり、追加・削除などの操作も行なえます。
" 不可視ファイルを表示する
let NERDTreeShowHidden = 1
" ツリーと編集領域を移動する
nmap <Leader><Tab> <C-w>w
jistr/vim-nerdtree-tabs
NERD tree単体だとタブごとにツリーの状態が変わりますが、これを導入することでツリーを共有でき、タブ間を移動してもツリーを表示し続けることができます。
" ファイルが指定されていなければNERD treeを有効にする
if argc() == 0
let g:nerdtree_tabs_open_on_console_startup = 1
end
Xuyuanp/nerdtree-git-plugin
ファイルに変更が加わった際に、NERD treeのツリーに変更を示すアイコンを表示します。
airblade/vim-gitgutter
ファイルに変更が加わった際に、Vimの行番号のところに「+」や「-」といった差分情報を表示します。
vim-airline/vim-airline
ステータスバーやタブバーをカスタマイズし、優れたインタフェースにすることができます。
デフォルトだとステータスバーのみが変更されますが、以下の設定でタブバーも同じように変更することができます。
" Powerline系フォントを利用する
let g:airline_powerline_fonts = 1
" タブバーのカスタマイズを有効にする
let g:airline#extensions#tabline#enabled = 1
" タブバーの右領域を非表示にする
let g:airline#extensions#tabline#show_splits = 0
let g:airline#extensions#tabline#show_tab_type = 0
let g:airline#extensions#tabline#show_close_button = 0
joshdick/onedark.vim
AtomのOne Darkを再現するためのカラースキーマです。
One Darkは配色が優れていると感じており、またMarkdownの編集などでAtomを使うこともあるので、同じ見た目にする目的で導入しています。
" One Darkを有効にするために必要
let g:onedark_termcolors=16
" カラースキーマを宣言する
colorscheme onedark
joshdick/airline-onedark.vim
vim-airlineの見た目をOne Darkと統一するためのプラグイン。 onedark.vimと同じ作者が提供しています。
bronson/vim-trailing-whitespace
ファイル末尾の余分なスペースをハイライト表示します。
また、以下の設定を行なうことで、ファイル保存時に自動でスペースを削除することができます。
" ファイル保存時に余分なスペースを削除する
autocmd BufWritePre * :FixWhitespace
Yggdroot/indentLine
インデントの深さを視覚的に分かりやすくします。
筆者の主観ですが、同様のVimプラグインのvim-indent-guidesと比較してシンプルで優れていると感じています。
ctrlpvim/ctrlp.vim
プロジェクト内のファイルやバッファ、履歴からファイルを検索することができます。
かなり使い勝手のよいプラグインで、これがあればエクスプローラは必要ないかもしれません。
" 検索モードを開く
nmap <Leader>f :CtrlP<CR>
thinca/vim-quickrun
ソースコードを実行し、その結果をVim上で表示することができます。
デフォルトでは実行結果が編集領域の上または左に表示されるので、以下で変更した方がよいかもしれません。
" エディタの分割方向を設定する
set splitbelow
set splitright
tyru/caw.vim
ドキュメントコメントの追加・削除を簡単に行なえるようになります。 多くの言語に対応しています。
" コメントの追加・削除を行なう
nmap <Leader>/ <Plug>(caw:zeropos:toggle)
vmap <Leader>/ <Plug>(caw:zeropos:toggle)
tyru/open-browser.vim
カーソル下のURLをブラウザで開いたり、単語を検索したりすることができます。
ライブラリ名などを手軽に検索できたりするので、導入しておくとなにかと便利です。
" カーソル下のURLや単語をブラウザで開く
nmap <Leader>b <Plug>(openbrowser-smart-search)
vmap <Leader>b <Plug>(openbrowser-smart-search)
rhysd/accelerated-jk
Vim標準のjやkコマンドによる移動をより速くすることができます。
導入すると、移動によるストレス軽減を実感できます。
" j/kによる移動を速くする
nmap j <Plug>(accelerated_jk_gj)
nmap k <Plug>(accelerated_jk_gk)
edkolev/tmuxline.vim
vim-airlineの配色をもとにtmuxのカラースキーマを生成します。
tmuxline.vimは、Vimを起動しないかぎりtmuxの見た目を変更しないので、tmuxコマンドを実行した時点で見た目は変わりません。
あらかじめファイルに書き出しておくことで、Vimを起動しなくても見た目を変更することができます。
" カラースキーマを生成する
:TmuxlineSnapshot! ~/.dotfiles/tmuxline.conf
~/.tmux.conf:
# カラースキーマを適用する
if-shell 'test -f ~/.dotfiles/tmuxline.conf' 'source ~/.dotfiles/tmuxline.conf'
tpope/vim-fugitive
Gitのためのユーティリティですが、筆者はvim-airlineにブランチ情報を表示するために導入しています。
以下でvim-airlineにブランチ情報を表示することができます。
" ブランチ情報を表示する
let g:airline#extensions#branch#enabled = 1
Shougo/neocomplete.vim
自動補完プラグイン。 曖昧マッチに対応していたりなど、コーディングを大きくサポートしてくれます。
" 自動補完機能を有効にする
let g:neocomplete#enable_at_startup = 1
Shougo/neosnippet.vim
スニペット機能を提供します。 neocomplete.vimや、次に紹介するスニペット集とあわせて導入します。
Shougo/neosnippet-snippets
neosnippet.vimのためのスニペット集です。
tpope/vim-endwise
Rubyのifやdef、doに対するendの自動補完などを行ないます。
Rubyだけでなく、いくつかの言語に対応しています。
Townk/vim-autoclose
カッコ((や{など)を入力すると、自動で閉じカッコを補完します。
osyo-manga/vim-monster
Rubyのコード補完機能を提供します。
to_sといった、Ruby固有のメソッドを補完してくれるため、Rubyのコードを書く際に便利です。
neocomplete.vimとあわせて導入します。
" vim-monsterを有効にする
let g:neocomplete#sources#omni#input_patterns = {
\ 'ruby': '[^. *\t]\.\w*\|\h\w*::'
\}
todesking/ruby_hl_lvar.vim
Rubyのローカル変数をハイライト表示します。 Rubyのコードを書く際の視認性を向上させることができます。
おわりに
以上が、筆者が導入しているVimプラグインとなります。
次回以降で、.vimrcの設定やtmuxの設定などについて記事を書いていきたいと思います。