VimやEmacsのコマンド入力とかの話。

( ´_ゝ`)ノシ
yoshitiaです。
backspace.fmのVim-side#002を聞いて久しぶりにスパルタンVimを読み返しました。
backspace.fm
www.kaoriya.net


pdfによると、キー配置を変えずにコマンドを増やせ、とありますが
コマンド打つのが面倒だと思うのが普通だと思います。
が、Vimのコマンド補完地味に優秀だったりする・・・。

Vimのコマンド補完

組み込みの関数は大抵省略形があります。(help見よう)

:w[rite] :q[uit] :e[dit] :vim[grep]

AFunctionという名前のコマンドがあった場合、

:AFu

くらいまで打ってタブを押すと残りを補完してくれる。

:AFunction

複数候補がある場合ステータスラインに候補を表示してくれる。

|AFunction1 AFunction2|
:AFunction

試しに:aと打ってからタブを押すといくつか表示されるはずです。
複数ある場合はまたはで候補を選択できます。
(この機能はコマンド名の大文字小文字は気にしません)

もし、何文字か入力して前方一致するコマンドが1つしかない場合は
タブで補完しなくても指定のコマンドを実行してくれます。

yoshitiaはtwit.vimを使っていてホームのタイムラインを見るとき、

:FriendsTwitter

を使いますが、
yoshitiaのVim設定だとFrから始まるコマンドはこれ1つだけなので

:Fr

とタイプしてEnterrまたは<C-m>するだけで実行できます。
(この機能はコマンド名の大文字小文字をきっちり区別して入力しないと
上手く動いてくれません)

この機能を把握していればよく使うコマンドの最低必要タイプ数を
覚えているだけでかなり楽になります。
作業用の即席コマンド名の頭数文字をホームポジションの文字で作ると
すごく便利だと思います
実際プラグインの関数はa,s,d,f,gで始まるコマンドが多いようで
左手で少ないタイプ数からコマンドを実行して
右手でカーソル移動や検索での移動をしようという思想を感じます。
(※個人の感想です。)

Emacsのコマンド補完

この辺の話はるびきちさんの本か記事で見たと思います。
記憶が怪しい・・・。
るびきち「日刊Emacs」
EmacsではM-xからコマンドを入力しますが
コマンド名が

eval-last-sexp

のようになっていて
慣れていないと

M-x eval

と入力してタブを押して
候補を確認する、とやるのが普通ですが
ハイフン区切りごとの頭2文字ずつとハイフンで
入力文字数を省略できます。
yoshitiaのEmacs設定だとeval-last-sexpを

M-x ev-la

と入力した後Enterまたは<C-m>で実行できます。
これは最初の区切りがevで始まって
次の区切りでlaから始まるコマンドが
これしかないからです。
(個々人のEmacs設定では違うこともあると思います)

ただ、なかなか最初の区切りの2文字だけで
入力できるケースが少ない気がするので
Emacsで使用頻度の高いコマンドは素直に
キーバインドに設定しちゃった方がいい気がします。

まとめ

テキストエディタに限らず
ツールの製作者が想定する使い方を理解するのが
うまく使えるようになる早道ですね。