vimで開発をするために
自分の開発のやり方の見直しをしていく中で、ほぼ素だったvimの設定も見直しました。プラグインもいろいろ入れてみて、開発がとてもやりやすくなりました。
プラグイン
denite
定番。プラグインを管理するプラグインマネージャーです。
ファイルを操作する
NERDTree
GitHub - scrooloose/nerdtree: A tree explorer plugin for vim.
ディレクトリをツリー表示することができるプラグインです。GUIっぽい表示になります。
<Space>nn
でNERDTreeを起動、<Space>nf
で今開いているファイルがあるディレクトリを開いた状態でNERDTreeを起動する設定にしています。
だいたいvimを起動した後、NERDTreeを起動、目的のファイルをt
でタブで開いて開発をしていることが多いです。
ディレクトリ/ファイルの操作も、ma
で新規作成、mm
で名前変更がvimから出ずに簡単にできます。
nnoremap [nerdtree] <Nop> nmap <Space>n [nerdtree] nnoremap <silent>[nerdtree]n :NERDTreeToggle<CR> nnoremap <silent>[nerdtree]f :NERDTreeFind<CR>
denite
GitHub - Shougo/denite.nvim: Dark powered asynchronous unite all interfaces for Neovim/Vim8
正直、使いこなせてない(´・ω・`)
設定がうまくいってないのか、Deniteを起動した後ノーマルモードにできないんです。Esc
でウィンドウ閉じちゃうの。なぜー。
とりあえず今はgrepする時ぐらいにしか使っていません。ノーマルモードにできないので、インサートモードで検索結果からファイルを絞り込んで選択して使っています。 deniteはいろんなことができるようなので、勉強して使いこなしたい。
let g:python3_host_prog = expand('/usr/local/bin/python') let g:unite_enable_start_insert=1 nmap <Space>d [denite] nnoremap <silent> [denite]h :<C-u>Denite file_mru<CR> nnoremap <silent> [denite]g :<C-u>Denite grep -buffer-name=search-buffer-denite<CR> nnoremap <silent> [denite]r :<C-u>Denite -resume -buffer-name=search-buffer-denite<CR>
Gitを操作する
fugitive
GitHub - tpope/vim-fugitive: fugitive.vim: a Git wrapper so awesome, it should be illegal
vim上でGitの操作が一通りできます。例えば:Gdiff
と打つと、vimdiffで表示してくれます。
色々できますが、わたしは:Gdiff
を一番使ってます。commitとかもできるけど使ってない。
gitgutter
Gitで管理しているファイルを開いているときに、変更した内容を視覚的にわかりやすく表示してくれます。+
で追加、-
で削除、~
で変更。
プログラムを書く
neosnippet / neosnippet-snippets
GitHub - Shougo/neosnippet.vim: neo-snippet plugin contains neocomplcache snippets source
補完機能。もうこれなしでは開発できない。
スニペットファイルはこちらのファイルを使わせていただいています。
VimでPHPの補完にスニペットを使ったら捗った件 - Qiita
スニペットを置くディレクトリを設定して、落としてきたスニペットファイルをディレクトリに置いて。
let g:neosnippet#enable_snipmate_compatibility = 1 let g:neosnippet#snippets_directory='~/.vim/dein/vim-snippets/snippets'
するとこうなる。
QuickRun
GitHub - thinca/vim-quickrun: Run commands quickly.
保存していなくてもvim上でプログラムが実行できます。
<Space>r
でQuickRunを起動、Ctrl+c
でプログラムを強制終了の設定にしています。q
でバッファを閉じます。
設定が少し難しかったです。成功した場合はbufferに、失敗した場合はquickfixに出力させて該当箇所に飛べるようにしています。
nnoremap <silent><Space>r :QuickRun<CR> nnoremap <expr><silent> <C-c> quickrun#is_running() ? quickrun#sweep_sessions() : "\<C-c>" au FileType qf nnoremap <silent><buffer>q :quit<CR> let g:quickrun_config = { \'_' : { \ 'outputter/buffer/split' : ':botright 8sp', \ 'outputter/error/success' : 'buffer', \ 'outputter/error/error' : 'quickfix', \ "outputter/buffer/into" : '1', \ 'outputter/quickfix/errorformat' : '%f:%l,%m in %f on line %l', \ 'outputter/buffer/close_on_empty' : 1, \ 'outputter' : 'error', \}, \}
lightline
GitHub - itchyny/lightline.vim: A light and configurable statusline/tabline for Vim
vimのステータスがかっこよくできます。モチベーションが上がる。かっこいい見た目だけでなく、実用的にもなります。
vim-powerlineのフォントのパッチをあてると、もっとリッチな感じに見た目を変更できますが、面倒でやってません。
set laststatus=2 set t_Co=256 let g:lightline = { ¦ \ 'colorscheme': 'solarized', ¦ \ 'active': { ¦ \ 'left': [ [ 'mode', 'paste' ], ¦ \ [ 'fugitive', 'readonly', 'filename', 'modified' ] ] ¦ \ }, ¦ \ 'component': { ¦ \ 'readonly': '%{&filetype=="help"?"":&readonly?"✖︎":""}', ¦ \ 'modified': '%{&filetype=="help"?"":&modified?"+":&modifiable?"":"-"}', ¦ \ 'fugitive': '%{exists("*fugitive#head")?fugitive#head():""}' ¦ \ }, ¦ \ 'component_visible_condition': { ¦ \ 'readonly': '(&filetype!="help"&& &readonly)', ¦ \ 'modified': '(&filetype!="help"&&(&modified||!&modifiable))', ¦ \ 'fugitive': '(exists("*fugitive#head") && ""!=fugitive#head())' ¦ \ } ¦ \ }
ステータスラインの左側に、vimのモード/ブランチ名/ファイル名/ファイルの変更内容を。右側はデフォルトの設定で、ファイルタイプやカーソルの位置を表示しています。 ちなみに、ブランチ名を表示させるためには、fugitiveのプラグインが必要です。
indentLine
GitHub - Yggdroot/indentLine: A vim plugin to display the indention levels with thin vertical lines
インデントを可視化してくれます。
まとめ
プラグイン入れていくのが楽しくてどんどん入れたものの、プラグインを使う意識をしないと使い方を忘れてしまうなあ、と。プラグイン入れただけで満足してはいけない。