xyzzy 上のカーソルの移動のキーバインド等

  • たまには人のためになる(かも知れない)記事を。
  • 僕の .xyzzy ファイルの一部を公開します。僕は、xyzzy に於いてカーソルの移動を C-k 等で行うようにしています。
;; File Date: 2013,08,01


;; ▼カーソル移動のキーバインド。:Cf. 『入門 xyzzy』 p.285 近辺。
;;; ■カーソル移動のキーを配置。
;;; ◆左移動
;;; (global-set-key #\C-j 'backward-char) としたいのだが、これは上手くいかない。
;;; "C-j" というキーは、LFD というキー(改行文字を入力するキー)と同一視されているとのことなので、次のように kbd-translate-table という関数を噛ませる。らしい。cf. http://www.uranus.dti.ne.jp/~shiro-/soft/xyzzy/keybind.html
(setf (svref *kbd-translate-table* (char-code #\C-j)) #\C-F13)
  (global-set-key #\C-F13 'backward-char)
;;; ◆上移動
;;; 同様に "C-i" というキーは TAB というキー(タブを入力するキー)と同一視されているので、同様にする。
(setf (svref *kbd-translate-table* (char-code #\C-i)) #\C-F14)
  (global-set-key #\C-F14 'previous-virtual-line)
;;; ◆右移動
;;; "C-l" も、既に別の動作が割り当てられているので、同様にする。
(setf (svref *kbd-translate-table* (char-code #\C-l)) #\C-F15)
  (global-set-key #\C-F15 'forward-char)
;;; ◆下移動
;;; "C-k" も、既に別の動作が割り当てられているので、同様にする。
(setf (svref *kbd-translate-table* (char-code #\C-k)) #\C-F16)
  (global-set-key #\C-F16 'next-virtual-line)
;;; ■単語単位でのカーソル移動を配置。
(global-set-key '(#\ESC #\;) 'next-word) ;next-word と forward-word には違いがあるようで、next-word の方が良いと思ったので、こちらを設定しておく。cf. http://programming.ironsand.net/2011/backward-word-previous-word-forward-word-next-word/
(global-set-key '(#\ESC #\j) 'backward-word)
;; ▲カーソル移動のキーバインド。


;; ▼ 1 画面スクロールのキーバインド。
;;; ■C-p で上にスクロール。
(global-set-key #\C-p 'previous-page)
;;; ■C-; で下にスクロール。
(global-set-key #\C-\; 'next-page)
;; ▲1 画面スクロールのキーバインド。


;; ▼上下高速スクロールのキーバインド。
;;; ■M-i で上に高速スクロール。
(global-set-key #\M-i 'fast-scroll-down)
;;; ■M-k で下に高速スクロール。
(global-set-key #\M-k 'fast-scroll-up)
;; ▲上下高速スクロールのキーバインド。


;; ▼改行文字挿入のキーバインド。C-, で改行文字挿入となるようにする。他に、C-m はデフォルトで改行文字挿入と見做されている。
(global-set-key #\C-\, 'newline)
;; ▲改行文字挿入のキーバインド。


;; ▼Delete のキーバインド。C-o で Delete となるようにする。
(global-set-key #\C-o 'delete-char-or-selection)
;; ▲Delete のキーバインド。


;; ▼redo のキーバインド。
;;; ■M-\ で redo となるようにする。(C-\ は標準で undo が設定してある。)
(global-set-key #\M-\\ 'redo)
;; ▲redo のキーバインド。
  • カーソルの移動を Ctrl キーとの同時押しで出来るようにしたことは、僕にとってやや大事な意味を持っていました。結論的に言うと、それは、キーボードを選ぶ時の要件が減るからです。僕は、キーボードの矢印キーはキーボードの右下にあり、しかも(表現が難しいのですが)そのキーも同じ大きさであり、かつテトリスの T 字ブロックを逆さまにした形に配置されていて欲しいと思っていました。それが僕にとって押しやすい形なのです。この好みを持っているが故に、キーボード選びは中々難しい問題でした。今使っているキーボードは、既に生産終了となっており、いつかは違うキーボードを使わねばならないと思っていました。たしかに、僕はこのキーボードの予備を二つくらい用意してあるのですが、それは不安なことでした。しかし、僕のメインエディターは今や xyzzy であり、この xyzzy に於いてカーソルの移動を Ctrl との組み合わせで出来るようになったので、キーボードの矢印キーがどこにあろうとも、その位置はたいした問題ではなくなりました(多分)。なぜなら、アルファベットのキーの配置は大抵のキーボードで一致しているからです。矢印キーの配置の故にキーボード選びを苦労と感じる方には、この情報は有用かも知れません。
  • 【注記:2014,01,08 02,54】上の引用に含まれている次の箇所は、もの凄く誤っていることに気が付いた。
;;; ■単語単位でのカーソル移動を配置。
(global-set-key '(#\ESC #\;) 'next-word) ;next-word と forward-word には違いがあるようで、next-word の方が良いと思ったので、こちらを設定しておく。cf. http://programming.ironsand.net/2011/backward-word-previous-word-forward-word-next-word/
  • これは、次のように、「;」 でなく 「l」 に定義されるべきである。
;;; ■単語単位でのカーソル移動を配置。
(global-set-key '(#\ESC #\l) 'next-word) ;next-word と forward-word には違いがあるようで、next-word の方が良いと思ったので、こちらを設定しておく。cf. http://programming.ironsand.net/2011/backward-word-previous-word-forward-word-next-word/
  • 誤ったままの書き方だと、M-; に next-word がマッピングされている。いや、それは見てみればそうでしかないのだが、おれの意図では M-l にマップしたつもりだった。これに気付かずに、ずっと M-l で next-word したつもりになっていた。それは危険である。なぜなら、デフォルトでは、M-l は downcase-word だからである。そりゃそうだ。道理で大文字が小文字になって texコンパイルがエラーになると思ったよ。当たり前過ぎる。カーソルを移動させただけなのにバッファを編集したことにもなってるし。書き間違えというのは本当に恐ろしいな。