Vimmerを強化するIDEAプラグイン
Vimmerを強化するためのIntelliJ IDEAプラグインを紹介します。
Table of Contents
IdeaVim
Vimの操作をエミュレーションするプラグインです。
JetBrains製のIDEならほとんど対応しています。
インストール
Setup
に従って他プラグイン同様にインストールします。
設定
~/.ideavimrc
を作成します。
source ~/.vimrc
で~/.vimrc
を読み込むこともできます。
~/.ideavimrc
" [ 🖥️ Display ]
"-------------------
" 無駄な描画をしない
set lazyredraw
" 再描画の速度が速くなるらしいけど最近の端末では無意味との噂も..
set ttyfast
" 検索語をハイライト
set hlsearch
" コマンドのタイムラグをなくす
set ttimeoutlen=1
" スクロールした時 常に下に表示するバッファ行の数
set scrolloff=5
" [ 🔊 Sound ]
"---------------
" ベル音を鳴らさない
set visualbell
" [ 🔍 Search ]
"----------------
" 検索文字列入力時に順次対象文字列にヒットさせる
set incsearch
" 検索文字列が小文字の場合は大文字小文字を区別なく検索する
set ignorecase
" 検索時に大文字を含んでいたら大/小を区別
set smartcase
" (設定するとincsearchが無効になるためコメントアウト) 検索時に最後まで行っても最初に戻らない
" set nowrapscan
" [ 📁 File system ]
"---------------------
" swapfileなし
set noswapfile
" クリップボードの共有化
set clipboard=unnamedplus
" [ ⌨️ Key ]
"-------------
" メソッド移動
nnoremap [m :<C-u>action MethodUp<CR>
nnoremap ]m :<C-u>action MethodDown<CR>
Vimプラグインのエミュレート対応
IdeaVimは著名なプラグインのエミュレートに対応しています。
いくつか紹介します。
easymotion
数回のキー入力で画面の好きなところに瞬間移動できるプラグインです。
個人的に、コレなしでVimを使うことは考えられません😆
easymotionだけはIdeaVim以外のプラグインが必要です。
インストールすると、依存しているAceJump
プラグインもインストールされます。
~/.ideavimrc
の設定は以下のようにしています。
~/.ideavimrc
set easymotion
" sで開始
nmap s <Plug>(easymotion-s2)
分割されたウィンドウも移動対象に含められないのか?
2020-05-03現在では未対応のようです。
Over Window Motion Note (easymotion-overwin-f) UNSUPPORTED (easymotion-overwin-f2) UNSUPPORTED (easymotion-overwin-line) UNSUPPORTED (easymotion-overwin-w) UNSUPPORTED
surround
特定の文字で囲まれた範囲を編集するプラグインです。
カッコやクォーテーション、タグの追加/削除/変更ができます。
~/.ideavimrc
set surround
multiple-cursors
IDEAにもあるマルチカーソルを実現するプラグインです。
Insertモード以外の操作にも対応しているので心強いです。
~/.ideavimrc
set multiple-cursors
" Ctrl+kで発動
map <C-k> <A-n>
commentary
コメント化/コメント解除するプラグインです。
text-objectやmotionと一緒に使えるのが強みです。
~/.ideavimrc
set commentary
ReplaceWithRegister
対象範囲をyank(クリップボード)に保存されたデータで置き換えます。
このとき、対象範囲のデータとyankの内容が置き換わることはありません。
複数の対象をyankのデータで置き換えたいときに便利です。
~/.ideavimrc
set ReplaceWithRegister
" _で発動. ダブルクォーテーションの中を置換したいなら _i"
map _ gr
argtextobj
引数を対象とするtext-objectです。
型も一緒に含まれるため、型定義がある場合に便利です。
デモには他プラグインの機能も混ざっています。
aa
やia
でtext-objectを指定している箇所が、本プラグインの機能です。
~/.ideavimrc
set argtextobj
textobj-entire
ファイル全体を対象とするtext-objectです。
~/.ideavimrc
set textobj-entire
総括
IntelliJ IDEAや他のJetBrains製 IDEで、Vimmer向けのプラグインを紹介しました。
作業効率という意味でVimの哲学は素晴らしいと思っています。
しかし、進化したツールがある現代に素のVimだけで開発するのは非効率です。
JetBrains製 IDEは開発効率や品質を圧倒的に向上させてくれます。
そこにVimの哲学をあわせることが今の時代にあった最適化ではないでしょうか。
P.S.
最近公開したMarkdownプラグインもよろしくお願いします😉
過去に書いたIDEA関連の記事もよろしければ🙏