プラグインマネージャーはvim-plug
です。
便利なもの
emmet-vim
https://github.com/mattn/emmet-vim
HTML・CSSの省略記法を展開できます。
プレフィックスキーはデフォルトでは<C-y>
ですが、少し遠すぎるので<C-e>
に変更しました。
Plug 'mattn/emmet-vim',{ \'on':'EmmetInstall' \}letg:user_emmet_install_global=1letg:user_emmet_leader_key='<C-e>'" JSXにも対応するletg:user_emmet_settings={ \'javascript':{ \'extends':'jsx' \} \}
augroup init_emmet
autocmd!
autocmd FileType css,html,htmldjango,javascript,markdown,vue EmmetInstall
augroup END
使用例
- 挿入モード
|
がカーソル位置
.container|
<C-e>,
:
<divclass="container">|</div>
lexima.vim
https://github.com/cohama/lexima.vim
閉じ括弧や、if文のendif
を自動で入力してくれます。似たようなプラグインは多く存在しますが、lexima.vim
が一番使いやすいように感じます。
Plug 'cohama/lexima.vim'
vim-submode
https://github.com/kana/vim-submode
サブモードを追加するプラグイン(?)。
Plug 'kana/vim-submode'
使用例
Vimでウィンドウサイズを変更するときは<C-w>+<C-w>+<C-w>+ ...
といったキーを入力すると思いますが、これだとかなりしんどいですよね。<C-w>+++ ...
でサイズ変更できるようにしてみます。
" この設定は`call plug#end()`よりも後に書くcall submode#enter_with('resize-window','n','','<C-w>+','<C-w>+')call submode#enter_with('resize-window','n','','<C-w>-','<C-w>-')call submode#enter_with('resize-window','n','','<C-w><','<C-w><')call submode#enter_with('resize-window','n','','<C-w>>','<C-w>>')call submode#leave_with('resize-window','n','','<Esc>')call submode#map('resize-window','n','','+','<C-w>+')call submode#map('resize-window','n','','-','<C-w>-')call submode#map('resize-window','n','','<','<C-w><')call submode#map('resize-window','n','','>','<C-w>>')
他にも、gttt ...
でタブを移動できるようにしている人もいるみたいです(自分はあまりタブを増やさないので設定していない)。
インデント拡張
indenthtml.vim
https://github.com/vim-scripts/indenthtml.vim
HTMLの高度なインデント。
Plug 'vim-scripts/indenthtml.vim'
indentpython.vim
https://github.com/vim-scripts/indentpython.vim
Pythonの高度なインデント(PEPに準拠)。
Plug 'vim-scripts/indentpython.vim'
オペレーター拡張
vim-operator-user
https://github.com/kana/vim-operator-user
後述のプラグインを使用するのに必要。
Plug 'kana/vim-operator-user'
vim-operator-replace
https://github.com/kana/vim-operator-replace
「ヤンクしているテキストに置き換える」というオペレーターを追加します。
Plug 'kana/vim-operator-replace',{ \'on':'<Plug>(operator-replace)' \}
map <Leader>r<Plug>(operator-replace)
使用例
- ノーマルモード
[]
はカーソル位置fuga
というテキストをヤンクしている
[h]oge hoge
<Leader>riw
:
fug[a] hoge
vim-operator-surround
https://github.com/kana/vim-operator-surround
かの有名なvim-surround
に似たプラグイン。こちらのほうが設計が洗練されているように感じる(vim-repeat
も必要ない)。
vim-surround
とはキーバインドが少し違うので、以降の際は慣れるまで時間がかかるかもしれません。
Plug 'rhysd/vim-operator-surround',{ \'on':'<Plug>(operator-surround-' \}
map <silent><Leader>sa<Plug>(operator-surround-append)
map <silent><Leader>sd <Plug>(operator-surround-delete)
map <silent><Leader>sr<Plug>(operator-surround-replace)" 日本語の括弧も扱えるようにする" キーバインドは後述の`vim-textobj-jabraces`に準拠letg:operator#surround#blocks ={ \'-':[ \{'block':['(',')'],'motionwise':['char','line','block'],'keys':['jb','j(','j)']}, \{'block':['{','}'],'motionwise':['char','line','block'],'keys':['jB','j{','j}']}, \{'block':['[',']'],'motionwise':['char','line','block'],'keys':['jr','j[','j]']}, \{'block':['<','>'],'motionwise':['char','line','block'],'keys':['ja','j<','j>']}, \{'block':['≪','≫'],'motionwise':['char','line','block'],'keys':['jA']}, \{'block':['「','」'],'motionwise':['char','line','block'],'keys':['jk']}, \{'block':['『','』'],'motionwise':['char','line','block'],'keys':['jK']}, \{'block':['〈','〉'],'motionwise':['char','line','block'],'keys':['jy']}, \{'block':['《','》'],'motionwise':['char','line','block'],'keys':['jY']}, \{'block':['〔','〕'],'motionwise':['char','line','block'],'keys':['jt']}, \{'block':['【','】'],'motionwise':['char','line','block'],'keys':['js']} \] \}
テキストオブジェクト拡張
vim-textobj-user
https://github.com/kana/vim-textobj-user
後述のプラグインを使用するのに必要。
Plug 'kana/vim-textobj-user'
vim-textobj-jabraces
https://github.com/kana/vim-textobj-jabraces
日本語の括弧を扱うためのテキストオブジェクトを追加します。
Plug 'kana/vim-textobj-jabraces'
使用例
- ノーマルモード
[]
はカーソル位置
[(]hoge)
dijb
:
([)]