IdeaVIMで使えるVimオプションの一覧

思うところあって,最近IdeaVIMのソースの読んでいるのだけれど,結構知らなかった機能が見つかったりして,なかなか面白い。
つーか,3年以上使ってるのに,特定の機能しか使ってなかったんだなぁ。>IdeaVIM


知らなかった機能。そのイチが起動オプション−−っていうの?IdeaVIMも $HOME/_vimrc(または,.vimrc)があれば読み込んで,初期オプションを自動設定していたようだ。
設定できるオプションとデフォルト値は以下の通り。

digraph false
gdefault gd
history 20
hlsearch false
ignorecase false
matchpairs (:),{:},[:]
more true
nrformats octal,hex
scroll 0
scrolljump 1
scrolloff 0
selection inclusive
showmode false
sidescroll 0
sidescrolloff 0
smartcase false
undolevels 1000
visualbell false
wrapscan true

hlsearchとselectionがあるって知って軽くショック。しかも,なんでデフォルトで"hlsearch=false, selection=inclusive"とかするかなぁ。ずーっとVisual Modeに不満があった,あの年月はなんだったんだ。orz
腹立たしいので,"hlsearch=true, selection=exclusive"と書き換えちゃる。:-)


ps.
incsearchオプションはコメントアウトされたままだった。開発止まって1年ちかくなるけど,実装する気あるんだろうか?

RegisterActionsを覗く

RegisterActions(com.maddyhome.idea.vim.keyパッケージ)とは,IdeaVIMの全コマンドの登録を司っているクラス。ここのソース読むと,IdeaVIMがサポートしているVimコマンドとキーバインドが一目瞭然なのだ。


そこで気付いたのが,矩形選択(blockwise-operators)をサポートしていたってこと(Ctrl+Q or Ctrl+V)。
まあ,矩形選択なんて滅多に使わないから,使うときはIdeaVIMを切ってIDEAのColumn Modeを利用していたんだけど,これも無駄な手間だったわけね。
ただ,キーバインドが,Ctrl+QかCtrl+Vというビミョーな設定だったため気付きづらかったってのもあるか(Vimでも滅多に使わないし)。
と思ったら,K (Run a program to lookup the keyword under the cursor.)に 'Quick Documentation Lookup'をリマップしてやがった。やるな,IdeaVIM。:-)


この 'Quick Documentation Lookup'みたいに,IDEA本来の機能に横流しするだけっちゅうのもあったり,なかなか面白かった。> RegisterActions

IdeaVIMのJoin LinesをIDEAのソレ(Smart Join)に差し替える

ここ書き換えればOK。

public class DeleteJoinLinesSpacesHandler extends ChangeEditorActionHandler {
  public boolean execute(Editor editor, DataPackage context, int count, int rawCount, Argument argument) {
    if (editor.isOneLineMode()) {
      return false;
    }

// ↓ この1行をコメントアウトして,
//    return CommandGroups.getInstance().getChange().deleteJoinLines(editor, context, count, true);
// ↓ この2行を追加する
    KeyHandler.executeAction("EditorJoinLines", context);
    return true;
  }
}

IdeaVIMよりIDEAのJoin Linesのほうが性能がよいので,満足じゃ。