以前、「テキストエディタMeryでEmacsキーバインド」でMeryでEmacsキーバインドを実現するマクロ集を公開しました。今回、新たにいくつかEmacsコマンドを追加して、v1.1を公開しました。
ダウンロードはこちらから。
追加したのは以下のコマンドです。
- write-file
- save-buffer
- search (検索ウィンドウを開くだけ)
- cancel-command (C-x入力をキャンセルするだけ)
- kill-mery
- unindent
- scroll-down
- scroll-up
- find-file
力業ですが、前回は断念した、2ストロークキーバインドも対応しています。
というのも、「C-x C-s (save-buffer)」ではまったためです。C-f などでカーソル移動していると、どうも手がEmacs気分になってしまい、保存しようとして C-x C-s を押してしまうんです。で、何が起きるかというと、カーソル行が消去されて上書き保存。よそ見をしていたりすると、気づかないうちに一行なくなっていて…
C-x C-s だけだったら、C-x のキーアサインを消してしまえばいいんですけど、せっかくなので、Meryを閉じる(C-x C-c)とかも欲しいなということでやってみました。
2ストロークキーは、少しトリッキーなので、最後の注意事項も見ておいてください。
個人的には、これでだいぶ快適にMeryが使えるようになりました。
Emacsキーバインド用マクロ
v1.0のものも含めて、同梱しているマクロとキーアサイン例をまとめます。キーアサインのしかたは、前回のブログポスト「テキストエディタMeryでEmacsキーバインド」を確認してください。太字がv1.1で追加したマクロです。
マクロ | 動作 | キーアサイン例 |
ctrl-x.js | 内部的にC-xが押されたフラグを立てます。これを見て次のコマンドの動作が変わります。 | C-x |
cancel-command.js | C-xの内部フラグをクリア | C-g |
beginning-of-line.js | 行頭にカーソルを移動 | C-a |
end-of-line.js | 行末にカーソルを移動 | C-e |
forward-char.js | 一文字右にカーソルを移動 | C-f |
find-file-and-forward-char.js | [C-xが押された後の場合] ファイルを開く [C-xが押されていない場合] forward-char.jsの動作 | C-f |
backward-char.js | 一文字左にカーソルを移動 | C-b |
next-line.js | 次の行にカーソルを移動 | C-n |
previous-line.js | 前の行にカーソルを移動 | C-p |
kill-line.js | カーソル位置から行末までをカット | C-k |
delete-char.js | カーソル右を一文字削除 | C-d |
delete-backward-char.js | カーソル左を一文字削除 | C-h |
set-mark-command.js | カーソル位置をマーク | C-SPACE |
kill-region.js | マークからカーソル位置までをカット。範囲選択している場合は、その部分をカット。 | C-w |
write-file-and-kill-region.js | [C-xが押された後の場合] 名前を付けて保存 [C-xが押されていない場合] kill-region.jsの動作 | C-w |
kill-ring-save.js | マークからカーソル位置までをコピー。範囲選択している場合は、その部分をコピー。 | Alt-w |
beginning-of-buffer.js | バッファ(現在のタブ)の先頭にカーソルを移動 | Alt-< (Alt-Shift-,) |
end-of-buffer.js | バッファ(現在のタブ)の末尾にカーソルを移動 | Alt-> (Alt-Shift-.) |
yank.js | ペースト | C-y |
undo.js | アンドゥ | C-/ |
save-buffer-and-search.js | [C-xが押された後の場合] 上書き保存 [C-xが押されていない場合] 検索ウィンドウを開く。ウィンドウを開くだけで、EmacsのようにC-s/C-rを押して次の検索はできません。 | C-s |
kill-mery-and-copy.js | [C-xが押された後の場合] Meryを終了。保存していないファイルがある場合は確認する。 [C-xが押されていない場合] コピー。Emacsのキーバインドではないですが、つぶすのももったいないので残しました。 | C-c |
unindent.js | インデントを1つ分戻す。Emacsのキーバインドではないですが、欲しかったので作りました。 | Shift+Tab |
scroll-up.js | 一画面順方向に送る | C-v |
scroll-down.js | 一画面逆方向に送る | Alt-v |
注意事項
[キーアサイン]
上記の表で、C-f と C-w は重複しています。C-xと組み合わせて使いたいかどうかで、どちらのマクロを登録するか決めてください。
例えば、C-x C-f でファイルを開きたい場合は find-file-and-forward.js を、C-f でのカーソル移動だけがほしい場合は forward-char.js を、C-f に登録してください。
[C-x キー]
C-xは、そのあとに対応していないキーを入力すると、内部フラグが残ったままになってしまいます。
例えば、ファイルを挿入しようと思って C-x i と打つと、単に「i」が入力されます。そのあと、カーソル移動しようとして C-f を打つと、最初の C-x が残っていて、C-x C-f となってファイルを開きに行ってしまいます。間違えて C-x を押してしまった場合は、cancel-command.js (C-g) でキャンセルしてください。
対応するコマンドを打った場合は、自動で C-x フラグはクリアされます。なので、上記の例で、間違ってファイルを開くウィンドウを開いた後は、正常に戻ります。
C-x を使った2ストロークキーはMery 3.0.0以上が必要です。
[v1.0とv1.1の差分]
v1.1は上記表の太字のマクロを追加しただけで、v1.0からあったものは変わっていません。
0 件のコメント:
コメントを投稿