初版 2011.1.5 最終改訂 2018.9.15
xyzzy は Windows 上で動作する emacs 風のエディタである。 unix 上の emacs に馴れた人にとっては非常に使いやすい。 ただし、若干異なっている面もある。
xyzzy の設定は以下のとおり。
・ 設定ファイルは .xyzzy
デフォルトの位置は c:\users\user-name\documents
ショートカットの名前として、ピリオドで始まるショートカット名は
使えないため、別の場所に置いてショートカットで参照することは出来ない。
ただし、環境変数 XYZZYHOME を設定すれば、別の場所に置くことも
可能。
・色の設定など「ツール」→「共通設定」, 「ツール」→「ローカル設定」で
設定する項目は xyzzy\user\user-name\wxp\xyzzy.ini の中に書きこまれる。
・ キーの指定の仕方が .emacs とは異なる
1 ストロークキーは #\C-x 2 ストロークキーは '(#C-x #C-u)
・ scroll-down というコマンドはない。previous-page が該当する
・ perl のソースファイルを編集する
拡張子を pl にすると perl モードになる。
tab を押すと 2 文字しか空白が入らない。4 文字入れたいのだが・・・
とりあえず M-x fundamental-mode として回避する。
・ 拡張子ごとに行間を変える ← 挫折した
行間の指定は xyzzy\user\user-name\wxp\xyzzy.ini の中に
lineSpacing=10
のように書き込まれている。lineSpacing という変数は
M-x set-variable では見えない。
.xyzzy では指定できないようだ。
起動時に -ini オプションによって ini ファイルを明示することは出来るので、
teraterm のようにオプションが異なるショートカットを複数用意することにより
切り替えることは出来そうだ。
ダブルクリックによってファイルを開いたときは、拡張子ごとに
設定する。
ちなみに、.emacs の記述をそのまま持ってきてもうまくいかない。
(setq auto-mode-alist (cons (cons "\\.txt$" 'text-mode) auto-mode-alist))
上の命令は「auto-mode-alist という変数は存在しない」というエラーが
出る。
・タブ幅の設定
(setq *tab-columns* 4)
モードごとに設定するには <---- 未確認
(add-hook 'text-mode-hook '(lambda ()
; (setq lineSpacing 20) lineSpacing という変数はない
(setq *tab-columns* 4)
) t)
---------------------------------------------------------
現在の .xyzzy は以下の通り。
--------------- ここから ---------------
; インクリメンタルサーチ
(load-library "isearch")
; IME の起動
(global-set-key #\C-t 'toggle-ime)
; 確認しながら置換
(global-set-key #\M-% 'query-replace)
; デフォルトのフォルダ
(set-default-directory "d:/users/user-name/documents")
;----------- キーのカスタマイズ ------------
(global-unset-key #\C-q)
(global-unset-key #\C-j)
; -- 1 ストロークキー -----
(global-set-key #\C-o 'previous-page)
; -- 2 ストロークキー -----
; C-c 系列
(global-set-key '(#\C-c #\C-x) 'kill-selection-to-clipboard)
(global-set-key '(#\C-c #\C-c) 'copy-selection-to-clipboard)
(global-set-key '(#\C-c #\C-v) 'paste-from-clipboard)
; ESC 系列
;(global-set-key '(#\M- \C-r) 'isearch-backward-regexp)
;(global-set-key '(#\M-s) 'query-replace-regexp)
;(global-set-key '(#\M-g) 'fill-region)
; C-q 系列
(global-set-key '(#\C-q #\C-r) 'beginning-of-buffer)
(global-set-key '(#\C-q #\C-c) 'end-of-buffer)
(global-set-key '(#\C-q #\C-q) 'quoted-insert)
(global-set-key '(#\C-q #\C-j) 'goto-line)
(global-set-key '(#\C-q #\C-f) 'forward-word)
; C-j 系列
(global-set-key '(#\C-j #\C-j) 'compile)
(global-set-key '(#\C-j #\C-f) 'forward-word)
(global-set-key '(#\C-j #\C-b) 'backward-word)
(global-set-key '(#\C-j #\C-s) 'shell)
(global-set-key '(#\C-j #\C-g) 'goto-line)
(global-set-key '(#\C-j #\C-o) 'open-line)
(global-set-key '(#\C-j #\C-m) 'load-my-mode)
(global-set-key '(#\C-j #\C-a) 'abbrev-mode)
(global-set-key '(#\C-j #\C-h) 'help-for-help)
; C-x 系列
(global-set-key '(#\C-x #\C-b) 'buffer-menu)
(global-set-key '(#\C-x #\u) 'undo)
; 以下の記述では複数のファイルが開いているとき、
; カレントバッファ以外はセーブしてくれないので、
; 没にする
;(global-set-key '(#\C-x #\C-c) 'save-buffers-kill-xyzzy)
(defun save-buffers-kill-xyzzy ()
(interactive)
(save-buffer)
(kill-xyzzy)
)
; <変数の設定方法>
;
; (1) M-x describe-variable で space を押し、
; 変数の一覧を表示させる。
;
; 目的とする変数名を見つける
;
; (2) .xyzzy で (setq 変数名 値) と設定する。
;
(setq *tab-columns* 4)
; 拡張子が tit のときは 48 文字で折り返す
; それ以外は 80 文字で折り返す
;
; <参考>
; http://hie.s64.xrea.com/xyzzy/note/coloring.html#change-color-with-extension
; http://xyzzy.jp/reference/wiki.cgi?p=set%2Ddefault%2Dfold%2Dwidth
(add-hook '*find-file-hooks*
#'(lambda ()
(let ((ext (pathname-type (get-buffer-file-name (selected-buffer)))))
; cond は 1 回マッチするとそれ以下は見ない
; t は常に真なので else に相当
(cond
((equal ext "tit") (set-default-fold-width 48))
((or (equal ext "xxx")(equal ext "yyy")(equal ext "zzz"))
(set-default-fold-width 80))
(t (set-default-fold-width 80))
))))
-------------------------- ここまで ------------------------------