« 2010年01月のエディタの話#1 Editor on MacBook(Mac OSX 10.4 Tiger) | Main | 谷崎潤一郎『細雪』新潮文庫刊 »



Fri, 22 Jan 2010

2010年01月のエディタの話#2 Editor on Windows2000 & WindowsXP

Posted at Fri, 22 Jan 2010 in computer::xyzzy

Windows のエディタは xyzzy 一択です。

とだけ書くとここで終わってしまうのですが、これは気に入らない点があれば Lisp でだいたいどうにでもなるし、Windows ネイティブなのでツールチップやヘルプの連携、ぶら下がりなどなど至れり尽せりで、さらにはフォントも簡単に好きなフォントを使えるというので、導入当初の泣きそうなハードルの高さも超えて常用エディタとなりました。MacBook 環境で Carbon Emacs を使い始めたのもそもそもはベースに xyzzy の使用経験があるからです。
他に Windows2000 環境には EmEditor のフリー版を入れています。昔メモ帳の代わりに使えるぐらい軽い機能限定のフリーエディションがあったのですが、いま少し探したところではないようです。
EmEditor はインタフェースがやさしい感じでアイコンなんかも丁寧に使ってあるところが他の Windows 用エディタと比べてぐんと飛びぬけているポイントです。結局エディタはというのは長いこと眺めている画面なので、フォントが美しくなかったりアイコンが気に入らないものだったりするのにあまり耐えられないのです。(ちなみに xyzzy はアイコンのツールバーが非表示)で、EmEditor は別にインタフェースが売りだけではなくて、無料でいいのかという水準は軽く超えるぐらいには高機能な良いエディタだと思います。そしてもちろん余裕があれば有償版のほうが当然メリットはあると思います(使ったことがないので予想)。あまり使っていないのできちんと紹介はできないのですが、xyzzy だと拡張 Lisp で補わないといけないようなファイルタイプにも対応していたりして、とんがったところがなく、Windows を普通に使っていく人にはオススメできるエディタです。

Netinstaller でインストールしているパッケージ

xyzzy に NetInstaller 経由でインストールされているパッケージの一覧

xyzzy ver.0.2.2.235
Generated Thu, 21 January 2010 16:04 +0900

その他に入れているパッケージ

Windows っぽいキーバインド

(provide "winkey2")

(in-package "editor")

;;; winkey.lからコピー
(defvar *default-selection-keymap*
  (let ((keymap (make-sparse-keymap)))
	(define-key keymap #\c-c 'copy-selection-to-clipboard)
	(define-key keymap #\c-x 'kill-selection-to-clipboard)
    (define-key keymap #\tab 'tabshift-selection)
    (define-key keymap #\s-f15 'untabshift-selection)
    (set-extended-key-translate-table exkey-s-tab #\s-f15)
	keymap))


;;;;;;;;;;;;;;;;;;
;; ■ 範囲選択中にタブが押されたら冒頭にタブを挿入
(defun perform-replace-selection (pattern replacement query regexp interactive-p noerror)
  "選択範囲内を perform-replace"
  (interactive "*p")
  (let ((type (get-selection-type)))
    (selection-start-end (start end)
      (save-restriction
        (narrow-to-region start end) (goto-char (point-min))
        (perform-replace pattern replacement query regexp interactive-p noerror)
        (save-excursion
          (goto-char (point-min))
          (start-selection type t (point-max))
          (fix-selection-point)
          )))))
(defun tabshift-selection ()
  "冒頭にタブを挿入"
  (interactive "*p")
  (perform-replace-selection "^.+$" "\t\\0" nil t nil t))
(defun untabshift-selection ()
  "冒頭のタブを1つ削除(タブがなければ何もしない)"
  (interactive "*p")
  (perform-replace-selection "^\t" "" nil t nil t))
(setq-default selection-keymap *default-selection-keymap*)

#|
;;; winkey.lからコピー
(defvar *default-selection-keymap*
  (let ((keymap (make-sparse-keymap)))
	(define-key keymap #\c-c 'copy-selection-to-clipboard)
	(define-key keymap #\c-x 'kill-selection-to-clipboard)
	keymap))
(setq-default selection-keymap *default-selection-keymap*)
|#


(setq-default selection-keymap *default-selection-keymap*)
(global-set-key #\c-z 'undo)
(global-set-key #\c-v 'paste-from-clipboard)
(define-key esc-map #\c-x #'ctl-x-prefix)
(define-key esc-map #\c-c #'specific-command-prefix)


;;; windowsっぽい設定
;(global-set-key #\c-a 'selection-whole-buffer)
;(global-set-key #\c-f 'search-dialog)
(global-set-key #\c-n 'new-file)
;(global-set-key #\c-o 'open-filer)
(global-set-key #\c-p 'print-selected-buffer-dialog)
;(global-set-key #\c-r 'replace-dialog)
;(global-set-key #\c-s 'save-buffer-dialog)
;(global-set-key #\home 'beginning-of-virtual-line)
;(global-set-key #\end 'end-of-virtual-line)
(global-set-key #\c-home 'beginning-of-buffer)
(global-set-key #\c-end 'end-of-buffer)
(global-set-key #\s-c-home 'selection-beginning-of-buffer)
(global-set-key #\s-c-end 'selection-end-of-buffer)
;(global-set-key #\f3 'search-forward-again)
;(global-set-key #\s-f3 'search-backward-again)
(global-set-key #\m-f4 'kill-xyzzy)
(global-set-key #\c-f4 'close-selected-buffer)
(global-set-key #\c-left 'backward-word)
(global-set-key #\c-right 'forward-word)
(global-set-key #\s-c-left 'selection-backward-word)
(global-set-key #\s-c-right 'selection-forward-word)

xyzzy の設定(~/usr/usrname/os/xyzzy.ini)

[Font]
Ascii=13,"BDF UM+",128
Japanese=13,"BDF UM+",128
Latin=18,"Courier New",0
Cyrillic=18,"Courier New",0
Greek=18,"Courier New",0
GB2312=18,"MS Hei",0
BIG5=18,"MingLiu",0
KSC5601=18,"GulimChe",0
Georgian=18,"BPG Courier New U",0
lineSpacing=2
backslash=1
recommendSize=0
sizePixel=1
[Colors]
textColor=#613c29
backColor=#fbfaf4
ctlColor=#d7c6b5
selectionTextColor=#f000000
selectionBackColor=#675441
kwdColor1=#6756d1
kwdColor2=#33844f
kwdColor3=#bb7d46
stringColor=#5a5e87
commentColor=#d9b681
tagColor=#bf9b46
cursorColor=#8b6bba
caretColor=#7b3c06
imeCaretColor=#52cbad
linenum=#a4a0a0
reverse=#2685758
unselectedModeLineFg=#633821
unselectedModeLineBg=#10e3dfe0
modeLineFg=#563d32
modeLineBg=#d9ccc4
fg1=#967a00
bg1=#d8e8f8
fg2=#9ced
bg2=#e1eef4
fg3=#4c64a2
bg3=#ccdadb
fg4=#3e2c6c
bg4=#e2e0c1
fg5=#293eca
bg5=#f1e6ca
fg6=#8b55c5
bg6=#d0f4ee
fg7=#34008d
bg7=#aad0a9
fg8=#b3711b
bg8=#cbeaf4
fg9=#dbb100
bg9=#52d0ee
fg10=#7a8100
bg10=#c1c7fa
fg11=#457597
bg11=#dbddfb
fg12=#4d78e6
bg12=#f1e2de
fg13=#2bb183
bg13=#eddce9
fg14=#51714f
bg14=#ebeade
fg15=#88814d
bg15=#e0e0e0
[Misc]
1280x1024=(31,211)-(1156,986),1
saveWindowSize=1
saveWindowPosition=1
restoreWindowSize=1
restoreWindowPosition=1
windowFlags=#17f
fnkeyLabels=0
foldMode=0
foldLinenumMode=2
[Filer]
textColor=#9000000
backColor=#6ffffff
highlightTextColor=#fffffff
highlightBackColor=#e6a240a
cursorColor=#c000c0
column=239,65,116,44
s1280x1024=(549,452)-(953,970),1
sort=0
columnLeft=169,65,116,44
columnRight=121,65,116,44
1280x1024=(513,59)-(1260,517),1
sortRight=0
sortLeft=0
[PrintPreview]
1280x1024=(219,351)-(1062,959),1
scale=99
[Print]
textMargin=(100,150)-(100,150)
headerOffset=100
footerOffset=100
columnSep=50
lineSpacing=20
lineNumber=0
columns=1
foldColumns=0
header="%f%l%r%:w, %0d %:m %Y %0h:%0M:%0s"
footer="- %p -"
headerOn=1
footerOn=1
recommendSize=1
showProportional=1
useBitmap=0
Ascii=100,"M+1P+IPAG",128,0,0
Japanese=100,"MS ゴシック",128,0,0
Latin=100,"Courier New",0,0,0
Cyrillic=100,"Courier New",0,0,0
Greek=100,"Courier New",0,0,0
GB2312=100,"MS Hei",134,0,0
BIG5=100,"MingLiu",136,0,0
KSC5601=100,"GulimChe",129,0,0
Georgian=100,"BPG Courier New U",0,0,0
[BufferSelector]
column=117,65,100,320
1280x1024=(170,443)-(728,736),1
[header]
1="%F%l%r%:w, %0d %:m %Y %0h:%0M:%0s"
2="%f%l%r%:w, %0d %:m %Y %0h:%0M:%0s"
[footer]
1="- %p -"

« 2010年01月のエディタの話#1 Editor on MacBook(Mac OSX 10.4 Tiger) | Main | 谷崎潤一郎『細雪』新潮文庫刊 »