ページ上の単語で補完

ページ上の単語を completer に 出したいなと思って書きました。

現状、単語の区切り方がよろしくない(特に日本語)せいか、微妙です。

COMMAND_LINE,INSERT から の 補完

vimperatorrc

:js <<EOF
userContext.word_completer_maps = [
    [[modes.COMMAND_LINE, modes.INSERT], ["<C-Space>"], {screen: true}],
];
EOF


のように 設定します。



の 状態から (割り当てた map) を 実行すると



単語補完に遷移します。
ここでは、hintMatcher を 利用して 絞ることができます。
(= migemo hint matcher を 利用していれば、migemo で 絞れます)



単語を指定後、を押せば、


commandline や input 要素に 復帰します。
(commandline や input 要素で 何か特殊なことをやっている場合は、正常に動作しません)

Map.arg を 使用したショートカット

上記のように作成したものの、を複数回押したくありません。
そこで、予めコマンドを登録しておいて、単語選択のみで実行できる方法を追加しました。

:js <<EOF
userContext.word_completer_shortcut = {
    modes: [modes.NORMAL],
    maps: ["<C-t>"],
    extra: {screen: true},
    t: "tabopen",
    o: "open",
    e: "eijiro",
    w: "tabopen wikipedia",
};
EOF

のように 設定しておくと、t で


となり、で "tabopen "として実行されます。



{screen: true} について

画像では、判別できないので補足です。


"screen: true"を設定すると、ページ全体ではなく、現状見えている部位から補完します。
よって、ページ先頭で補完をcall すれば、ページ末尾 付近の 単語が 抽出されません。




source:https://github.com/caisui/vimperator/blob/master/plugin/word-completer.js