Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

VimmerがRuby on Railsを書くときに使えるVimプラグイン集 2019

$
0
0

vimでRuby on Railsを書くときに重宝するプラグインを紹介します。

  • NERDTree  ファイルツリー
  • vim-rails   ファイル移動、Railsコマンド実行
  • fzf.vim    インクリメンタル検索
  • vim-endwise ifdefなどの end補完
  • coc.nvim   補完
  • ale      静的解析
  • ruby-matchit %によるdef...end等のキーワードを移動

設定例として、自分の.vimrcに書いている設定を載せてます。

NERDTree

scrooloose/nerdtree
ファイルツリー機能が使えます。ド定番です。
nerdtree2.mov.gif

参考
vim-plugin NERDTree で開発効率をアップする! @zwirky

vim-rails

tpope/vim-rails

railsプロジェクト内のシームレスな移動や、vimからのrailsコマンドの実行が出来るようになります。
vimrails.mov.gif

GIFでは例として、gfでカーソル化の文字列から該当するファイルを開き、:Aで対応するspecファイルを開いています。

参考
vim-rails よく使いそうなやつ @bibio

fzf.vim

junegunn/fzf.vim

Go言語製の fzfと呼ばれるコマンドラインツールを使用したプラグインで、プロジェクト内のファイル名や、ソースコードの文字列あいまい検索ができます。

.vimrc
letg:fzf_action={  \'ctrl-s':'split'}

nnoremap <C-p>:FZFFileList<CR>
command! FZFFileList call fzf#run(fzf#wrap({            \'source':'find . -type d -name .git -prune -o ! -name .DS_Store',            \'down':'40%'}))

nnoremap <C-b>:Buffers<CR>
nnoremap <C-g>:Ag<CR>
nnoremap <silent><C-]>:call fzf#vim#tags(expand('<cword>'))<CR>letg:fzf_buffers_jump=1

command!-bang -nargs=? -complete=dir Files
            \call fzf#vim#files(<q-args>, fzf#vim#with_preview(),<bang>0)

fzf.mov.gif

GIFでは ctrl + pでファイル名検索、ctrl + bでバッファー検索をしています。
ctagsとの連携なんかもできちゃいます。

fzf.vimはプラグイン本体に加えて fzfそのもののインストールも必要になりますが、
fzfvim抜きにしてもコマンドラインツールとしてとても優秀なのでオススメです。

参考
fzfとvimで少ない労力で作業効率を引き上げた話 @Sa2Knight
さいつよのターミナル環境を構築しよう @b4b4r07

ファイル検索プラグインの別の選択肢としてdenite.nvim(unite.vimのつよいやつ)というプラグインがあります。
もっと複雑な処理を走らせたい方におすすめです。(あんまりわかってない)

vim-endwise

tpope/vim-endwise
def...endや、if...endなどの対応するキーワードを自動補完してくれます。

endwise.mov.gif

地味にきいてくる便利さです。

coc.nvim

neoclide/coc.nvim
coc.nvimTypeScript製の補間プラグインです。LanguageServerProtocol(以下LSP)と呼ばれる、コーディング支援用のプロトコルが使用可能で、強力な補完機能が使えます。
rubyの場合、 solargraphと呼ばれるLSPの gemを使用します。

coc.nvimは、 独自の設定ファイルとして .vim/coc-settings.jsonを使用します。

coc-settings.json
{"suggest.enablePreselect":true,"solargraph.commandPath":"solargraphの絶対パス"}
.vimrc
letg:coc_global_extensions=['coc-solargraph']

inoremap <silent><expr><TAB>      \ pumvisible() ? "\<C-n>":      \<SID>check_back_space() ? "\<TAB>":      \ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>":"\<C-h>"function!s:check_back_space() abort
  letcol=col('.')-1return!col|| getline('.')[col-1]=~# '\s'endfunction

coc.mov.gif

右に[LS]と表記されている単語が、LSPによる補完候補です。
めっちゃ出ます。

参考
LanguageServerProtocol(LSP)のススメ @himanoa
neovim + coc.nvim で LSP藻ログ

coc.nvimの他にも、asyncomplete + vim-lspや、 deoplete + LanguageClient-neovimの組み合わせでもLSPの補完が使えます。

ale

w0rp/ale

gemrubocop構文エラーを自動で非同期静的解析してくれるツールです。

.vimrc
letg:ale_fixers={      \'ruby':['rubocop'],      \}

ale.mov.gif

if...endendを消すと構文エラーを指摘してくれます。

言語ごとにfix, lintツールを指定するとruby以外でも大活躍してくれます。

参考
neovim + 🍻ale + 🚓rubocop hoshinotsuyoshi.com

ruby-matchit

vim-scripts/ruby-matchit
%を拡張して、def...end等のキーワードを移動出来るようになります。

まとめ

他にも良いプラグインがあれば教えてください
それではよい vim, rails ライフを…


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>