しょぼしょぼすくりぷとxyzzy > カスタマイズするための知識 > キーバインド設定

xyzzyのキーバインド設定

テキストエディタで最初によく行うことのひとつはショートカットキーのようなキーバインド設定ですね。
設定の仕方は emacsに似ています。

キーバインドとは

# キーバインドを変更する前には、describe-keyでデフォルトのキーバインドをチェックしておくのもいいかも

キーバインド設定例

xyzzy lisp:キーバインド設定例

;一部のmodeに設定(htmlの例)
(define-key ed::*html-mode-map* #\c 'c-indent-line)

;どのモードでも動作させる場合(globalのキーバインド設定)
(global-set-key #\c 'c-indent-line)

;または
(define-key *global-keymap* #\c 'c-indent-line)
キーバインドを設定するときの引数の二番目がモードに対応したキーマップです。 引数の三番目が割り当てるキーで 引数の最後が実行される関数です。

キーマップの情報はリファレンスの下記が参考になります。
リファレンス(wiki) > Type > Tips > 各種言語キーマップ

キーバインドするときのキーの表記(指定)の仕方はいろいろあります。

#\5
;単なる5キー

;特殊キー
#\F1 or #\ESC #LBtnUp #Left
;Toy さんとこが参考になります

#\TAB
;TABキー

#\C-p
;Ctrl 押しながら p

#\M-x
;Alt 押しながら x / または ESC のあと x

;2ストロークキー
'(#\C-x #\C-y)
; C-x のあと C-yと押す。リスト用に指定する。リスト形式にする。
;2ストロークキーのいくつかのキーマップは下のような指定方法もあります。
;C-xのあと C-f用の設定 '(define-key ctrl-x-map #\C-f 'find-file)
;別な方法として、ctrl-x-mapの他に Metaキーのesc-map やctrl-x-4-map , spec-mapなどがあります。

;もっと普通のっぽいのはこんな感じです。
(global-set-key '(#\C-x #\5 #\o) 'other-pseudo-frame)


キーの表現方法はリファレンスが参考になります。 リファレンス(wiki) > Type > Tips > キー表現使用可能文字

ちょっと出来ないキーをバインド設定する裏技

(setf (svref *kbd-translate-table* (char-code #\C-i)) #\F13)
(global-set-key #\F13 'previous-virtual-line)

;又は (set-extended-key-translate-table exkey-S-tab #\F20)
(global-set-key #\F20 'some-funct)

例えばShift -TABを直接設定できないので F20キーを間接的に利用して キー設定を可能にしています。

関数の指定方法について

関数の前につける ' と #'の違いについては、こちらが参考になります(IIJ技術研究所 山本和彦)

補足情報

キーバインドに関連する知っていると便利なこと

知っていると便利かもしれないキー

キーバインドとは関係ないですが、キーボードの使い方としてちょっと面白い(昔風なのかな)入力方法を紹介します。
C-i TAB
C-mRET(改行)
(C-j インデントも C-o 下にずらす改行)
C-[ ESC
C-hBS

これらはキーボードの特性なので OS や ソフトはたぶん関係ないです。

ホームポジションから離れない分良いかな。でも片手でもできないが・・・

サンプル

M-x で入れたコマンドを実行後、ショートカットキーがあれば、知らせてくれるlisp

関連リンク

静的/動的補完とは? とその設定方法
静的・動的補完の説明とその使い方を実例を上げて説明

インデント設定方法
xyzzyでインデントの設定方法

キーワードファイルの設定方法
xyzzyのキーワード設定方法

動的なisearchのインクリメンタルサーチに色付け
isearch.lを拡張して、色がつくようにします。

記事リンク

xyzzyのインデント設定
FAQ tips
.xyzzyと siteinit.lの設定
よく使ういろいろな作者の lisp ライブラリ紹介
キー操作練習帳(txt)

しょぼしょぼすくりぷとxyzzy > カスタマイズするための知識