初版 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)) )))) -------------------------- ここまで ------------------------------