Rapid Express

Rapid Express

中小企業を支援するLinuxベースのWebアプリケーション開発

Rapid Express RSS Feed
 
 
 
 

EmacsのVZ化計画はじめました

Emacsを覚えなければならないハメになってしまいました。

自分のパソコン歴というものはNECの98NOTESからで、MS-DOSでスタートしてVZエディタのキーバインドである、Word Star系列のダイヤモンドカーソルに染まりきっていました。
時代がWindowsに移っていく中で、エディタもWindows上のWZに乗り換えたわけですが、そのとき、ダイヤモンドカーソルは捨て去りました。エディタの中でだけダイヤモンドカーソルとしても、別のアプリケーションでは違う割り当てになっていまうし、それどころか、エディタの中でさえメニューやファイル選択にダイヤモンドカーソルは使えません。
Windowsに移行するための最善策は、自分の指をカスタマイズすることだったという確信は、今も変わりません。

 

それが今になってEmacsです。
しかもプログラミングに今すぐ使いこなければならない(涙目)

選択肢は3つです。

1. 再び自らの指先をカスタマイズする。
2. EmacsをWindows風にカスタマイズして使う。
3. 今さらながらVZ風にカスタマイズして使う。

1は一度経験していることだし、せっかくなら正統派Emacs遣いを目指すべきところでしょう。
でも、ありとあらゆるコマンドに別々のキーが割り当てられているEmacsの標準インターフェースが、どうにも耐えられそうにありません。たとえば、Emacsの対応括弧へのジャンプには前括弧・後括弧、外前括弧、外後括弧と別のキーコマンドが割り当てられているのです。こんなもの、前にあれば後ろ、後ろにあれば前、中にあれば外へと自動判断すれば1個で済むのに。
削除系コマンドも同様です。文字削除と空白削除が別割り当てというのが信じられません。カーソル位置の文字種とカラム位置で判断すれば、Deleteキーひとつで十分に便利な削除コマンドを分岐できるはずです。

VZからWindowsへ移行できたのは、身につけた操作を捨てる、いわば、垢を洗い落とす作業だから可能だったわけで、今さらこんなにも体系化されていない大コマンド群を覚えることは不可能です。

結局、Emacsをカスタマイズするしかないわけですが、ちょっと調べただけで、Windows化は即座に沈没。Shiftで範囲選択ということを実現するのは不可能なようです。

となると、VZ風カスタマイズしか(私には)残っていません。果たして十数年ぶりにVZ風のキー操作に身体が対応するのだろうか? ……と試しにWindows上のWZエディタを、VZ風キー割り当てにチェンジしてみることに。

なるほど、「昔取った杵柄」ってのはこういうことを言うわけだ。身体(指先)が勝手に覚えているもので、すんなりとVZでのエディティング操作が甦ってきました。
さすがに他のアプリとのカット&ペーストでCtrl+Vとかやってしまうことがあるので、Windows上のWZエディタでは、基本キー割り当てをVZとしつつも、Ctrl+Vには貼り付けを割り当てたけど(VZのCtrl+Vは、挿入/上書き切り替え)。

 

ということで、.emacsの編集を始めました。
VZ風のキー操作を割り当てるためには、VZ風のコマンドがEmacs上で実現されていなければならないわけで、必然的にLipsマクロを書かざるをえない。
しかしなんね、Lipsって。if文をどう書いて良いかさえようわからん。

こういう作業していて理解できるのは、Emacsの豊富なコマンド群は、それらを束ねて1つのマクロインターフェースを作るための部品ってことだね。その部品の1個1個についているキー割り当てを、几帳面に覚えてる人たちって……ソンケイシマス





2 Responses to “EmacsのVZ化計画はじめました”

  1. 1
    yama:

    もう遅いかもしれませんが、
    Windowsライクなキーバインドは
    cua-mode で実現できます。
    シフトキーで範囲選択は、
    (pc-selection-mode)
    選択範囲に色を付けるは、
    (transient-mark-mode 1)
    対応する括弧を光らせるは、
    (show-paren-mode 1)

  2. 2
    my:

    情報ありがとうございます。
    結局今は、自分の手のカスタマイズ化が進み、C-x 4…などと使い込んでたりします。はあ。

Leave a Reply



Tags

Links




Meta


TMAX.MYOPENSRC.COM