Eclipse+Emacsキーバインドユーザのためのxyzzy設定。
(タイトル変えました (。_。)
Windowsでエディタを使うとき、軽くて機能も十分にそろっているTeraPadを長らく使ってたんだけど、この一年ほどはEmacsライクなキーバインドの使えるxyzzyを使うようになった。が、いろいろ普通にできないことがあったて微妙だったりした。例えば・・・。
- スクロールしたら選択状態がはずれてしまうのが嫌だ
- リージョンに色をつけたい
- インクリメンタルサーチしたい
- 複数行まとめてインデントさせたい
- xyzzyでコピーしたものをほかのアプリにペーストしたい
- 全選択が面倒(クリック5回とかいや)
- diffをとりたい
しかし、ちょっと真面目に設定を探してみたら、すでにみんなが解決してくれていた。
スクロールしたら選択状態がはずれてしまうのが嫌だ
リージョンに色をつけたい
以下のサイトからregion-hilight.lをダウンロードして.xyzzyに設定を加えるだけで簡単に使えます。これは、ずっと欲しかった。
http://www2.ocn.ne.jp/~cheerful/script/xyzzy/mode/regionhilight.html
ちなみに、ハイライトされた色の設定は「ニセ反転色」に対応しているみたい。
インクリメンタルサーチしたい
(require "isearch")を書くだけ。なんと、こんな設定があったとわ。これで検索のストレスがなくなります。
http://t-mse.net/index.php?xyzzy
複数行まとめてインデントさせたい
xyzzy-Lispで僕色に染まったエディタを作ろうぜ
変態紳士むけのリージョン選択してインデントを使わせていただきました。
xyzzyでコピーしたものをほかのアプリにペーストしたい
なんと、元々こんな設定箇所があったのね。
「共通設定」>「さまざま」>「削除バッファとクリップボードを中途半端に同期する」
http://xyzzy.s53.xrea.com/qanda/wiki.cgi?p=54bf89b08d70fa735e3fe7e325f40ea8
全選択が面倒(クリック5回とかいや)
(global-set-key '(#\C-x #\h) 'selection-whole-buffer)
まさにこれですよ。http://xyzzy.s53.xrea.com/wiki/index.php?%BC%C1%CC%E4%C8%A2%2F11(global-set-key
diffをとりたい
ここ(xyzzy 関連の覚え書き)にある方法で設定しました。Windows用のdiff.exeを入れて設定を加えるだけっす。diff.exeへのリンクが切れてましたが、生きているのはこれ(プログラミング・ツール(移植ソフト))かな。
ということで、私が設定した内容を。もうちょっとまとめてまた、月曜日くらいにでも・・・。
というわけで、月曜日。
私の設定した、xyzzy.iniと、.xyzzyをご覧ください。
まずは、xyzzyをインストールしたディレクトリの、usr/hironemu/wxp/xyzzy.ini
色の設定は、xyzzy の音 - みんなの楽しい色設定にある、「xyzzyの使い方がわからぬヤシ励ましあえその2 959 さん」の一番上のやつをもとにしています。
[Colors] textColor=#d0d0d0 backColor=#3c2800 ctlColor=#8080 selectionTextColor=#ffffff selectionBackColor=#cf8f92 kwdColor1=#98fb98 kwdColor2=#82ddee kwdColor3=#ffff00 stringColor=#7aa0ff commentColor=#ffbf80 tagColor=#face87 cursorColor=#c0c0c0 caretColor=#e8cc80 imeCaretColor=#d4eefc linenum=#ffebc1 reverse=#c4ffff unselectedModeLineFg=#13000000 unselectedModeLineBg=#10e8e8e8 modeLineFg=#d0d0d0 modeLineBg=#13000000 fg1=#ff bg1=#ff fg2=#ff00 bg2=#ff00 fg3=#ffff bg3=#ffff fg4=#ff0000 bg4=#ff0000 fg5=#ff00ff bg5=#ff00ff fg6=#ffff00 bg6=#ffff00 fg7=#ffffff bg7=#ffffff fg8=#0 bg8=#0 fg9=#80 bg9=#80 fg10=#8000 bg10=#8000 fg11=#8080 bg11=#8080 fg12=#800000 bg12=#800000 fg13=#800080 bg13=#800080 fg14=#808000 bg14=#808000 fg15=#808080 bg15=#808080 custColor0=#ffffff custColor1=#ffffff custColor2=#ffffff custColor3=#ffffff custColor4=#ffffff custColor5=#ffffff custColor6=#ffffff custColor7=#ffffff custColor8=#ffffff custColor9=#ffffff custColor10=#ffffff custColor11=#ffffff custColor12=#ffffff custColor13=#ffffff custColor14=#ffffff custColor15=#ffffff buftabSelFg=#13000000 buftabSelBg=#10f0f0f0 buftabDispFg=#13000000 buftabDispBg=#10f0f0f0 buftabFg=#13000000 buftabBg=#10f0f0f0 tabSelFg=#13000000 tabSelBg=#10f0f0f0 tabFg=#13000000 tabBg=#10f0f0f0 [Misc] 1920x1200=(738,108)-(1934,1067),1 saveWindowSize=1 saveWindowPosition=1 restoreWindowSize=1 restoreWindowPosition=1 windowFlags=#f77 fnkeyLabels=15 foldMode=-1 foldLinenumMode=1 [Font] Ascii=16,"Courier New",0 Japanese=13,"HGゴシックM",128 Latin=19,"Courier New",0 Cyrillic=19,"Courier New",0 Greek=19,"Courier New",0 GB2312=19,"BatangChe",0 BIG5=19,"MingLiU",0 KSC5601=19,"GulimChe",0 Georgian=19,"BatangChe",0 lineSpacing=0 backslash=0 recommendSize=0 sizePixel=0 [Filer] textColor=#9000000 backColor=#6ffffff highlightTextColor=#fffffff highlightBackColor=#eff9933 cursorColor=#c000c0 columnLeft=121,65,116,44 columnRight=121,65,116,44 1920x1200=(643,340)-(1398,809),1 sortRight=0 sortLeft=0 column=121,65,116,44 s1920x1200=(382,262)-(794,791),1 sort=0
次に、ユーザディレクトリ(C:\Users\ユーザ名\.xyzzy、とかかな。なければ、作りますよ。)にある.xyzzy
まぁ、上の説明には書いてない設定とかもあるけど、参考までに。javascript-modeとかいい感じ。
;; javascript-mode ;; http://xyzzy.s53.xrea.com/wiki/index.php?%B3%C8%C4%A5lisp%2Fjavascript-mode (load-library "javascript-mode") (push '("\\.js$" . javascript-mode) *auto-mode-alist*) ;; 全選択 C-x h ;; http://xyzzy.s53.xrea.com/wiki/index.php?%BC%C1%CC%E4%C8%A2%2F11 (global-set-key '(#\C-x #\h) 'selection-whole-buffer) ;; api.lが見つからないのでコメントアウト ;; win32api ;;(require "api") ;; layered-window ;;(require "layered-window") ;; grep 結果からダブルクリックでファイルを開く ;; http://hie.s64.xrea.com/xyzzy/note/search.html#grep-mouse-left-press ;; そもそもF10でも開く (defun grep-mouse-left-press () (interactive) (let ((click (mod *last-mouse-click-count* 6))) (if (= click 2) (first-error) (mouse-left-press)))) (defvar *grep-map* nil) (unless *grep-map* (setq *grep-map* (make-sparse-keymap)) (define-key *grep-map* #\LBtnDown 'grep-mouse-left-press)) (add-hook 'ed::*grep-hook* #'(lambda () (use-keymap *grep-map*))) (add-hook 'ed::*grepd-hook* #'(lambda () (use-keymap *grep-map*))) ;; diff ;; http://ohkubo.s53.xrea.com/xyzzy/memo.html ;; Windows 用のdiffをダウンロード ;; http://cetus.sakura.ne.jp/softlab/toolbox1/index.html (setq ed::*diff-command-name* (map-slash-to-backslash (merge-pathnames "D:/apps/diff272w/diff.exe" (user-homedir-pathname)))) ;; diff-detail ;;(require "diff-detail") ;; スクロールしてもセレクションが外れないようにする (require "keep-selection") (in-package "editor") (defun mouse-wheel-scroll (window n lines) (or lines (setq lines (window-lines window))) (with-selected-window (set-window window) (move-kept-selection #'scroll-window (* n lines)))) (setq mouse-wheel-handler #'mouse-wheel-scroll) (defun previous-page-kept-selection () (interactive) (move-kept-selection #'previous-page)) (in-package "user") (global-set-key #\PageUp 'previous-page-kept-selection) (global-set-key #\PageDown 'next-page-kept-selection) ;; インクリメントサーチに (require "isearch") ;; リージョンのハイライト ;; http://www2.ocn.ne.jp/~cheerful/script/xyzzy/mode/regionhilight.html ;; リージョンの色は「ニセ反転色」で変更 (load-library "region-hilight.l") ;; 一括インデント ;; http://www.quels.net/tatutoki/code/xyzzy.html ; 一括インデント(セレクション/保持) 2008/09/14 (defun indent-selection-hold() (interactive "*") (save-excursion (if (pre-selection-p) (selection-start-end (start end) (shift-region start end 1) (start-selection 2 t) )))) ; 一括アンインデント(セレクション/保持) 2008/09/14 (defun unindent-selection-hold() (interactive "*") (save-excursion (if (pre-selection-p) (selection-start-end (start end) (unshift-region start end 1) (start-selection 2 t) )))) ;;(global-set-key #\M-\. 'indent-selection-hold) ;;(global-set-key #\M-\, 'unindent-selection-hold) ; 一括インデント(リージョン/保持) 2008/09/14 (defun indent-region-hold() (interactive "*") (save-excursion (if (mark) (shift-region (region-beginning) (region-end) 4) ))) ; 一括アンインデント(リージョン/保持) 2008/09/14 (defun unindent-region-hold() (interactive "*") (save-excursion (if (mark) (unshift-region (region-beginning) (region-end) 4) ))) ; キーバインド (global-set-key #\M-\. 'indent-region-hold) (global-set-key #\M-\, 'unindent-region-hold) ;; ruby-mode ;; http://homepage3.nifty.com/Yukimi_Sake/ ;; JRuby対応 ;; ruby-mode.l ;; 1. 39行目 ;; (defvar *ruby-prog* "ruby") ;; -> ;; (defvar *ruby-prog* "jruby") ;; 2. 674行目 ;; (make-process (concat "ruby -r irb -e " irb-start-script ) ;; -> ;; (make-process (concat "jruby -r irb -e " irb-start-script ) ;; 3. バイトコンパイル ;; 修正したruby-mode.lをバイトコンパイルする ;; M-x: byte-compile-file [ENTER] ;; ruby-mode.lの場所を指定して[ENTER] (load-library "ruby-mode") (push '("\\.rb$" . ruby-mode) *auto-mode-alist*)
というわけで、「Eclipse+Emacsキーバインドユーザのための」とかっていうタイトルを付けたんだけど、結局は自分メモな感じです。なんか他にもあれば、このページに追加していこうかなと。
追記
- 2011/01/25 ruby-modeの設定を追加