Linux 用のテキストエディタとして、vi と並んで代表的な存在です。
Emacs は、テキストエディタとしてだけでなく、シェルとしての利用やファイル管理、メールの読み書き、Webの閲覧までできるため、Linux の日常的な作業環境として利用できるだけの機能があります。その分、動作が重いとの批判があるようで、実際、起動はちょっと遅いような気がします。とは言うものの、僕自身は Linux の起動と同時に Emacs を立ち上げているため、普段は動作が遅いと感じることはあまりありません。vi のモード切替でちょくちょく混乱するので普段は Emacs を使っています。あと、岩谷宏さんが Emacs を毛嫌いしているのも使っている理由の一つだったりします(相変わらず口が悪いですけど)。
僕自身は、Vine に標準で入っているものを使用しています。
ソースコードからコンパイルする場合、日本語入力のためにパッチを当てる必要があったりして、結構面倒そう。この辺の作業を省略できるだけでも、日本語を標準でサポートしているディストリビューションだと楽。具体的なインストール方法については、僕自身試していないので記述を省略します。
僕が学生時代初めて Emacs を使い始めたときは、Emacs の設定ファイルは、「.emacs」だけだったのですが、今は「.emacs」「.emacs.el」「.xemacs.el」等、複数のファイルがあります。どのファイルに個人的な設定を記述するがいいのか、今ひとつよく分からないので、とりあえず僕は「.emacs.el」に書いています。
【追記】
その後、調べた結果、「.emacs.el」「.xemacs.el」は、Emacs20 以降で使われているようです。てなわけで、珍しく勘があたった(^^;
「.emacs」と「.emacs.el」が存在する場合、「.emacs」への記述は無視されるので注意が必要。(『LINUX WORDL 2003稔4月号』より)
Vine では Emacs のデフォルトの設定は、80文字で自動改行されるようになっています。これはこれで便利なのでしょうし、かつては1行があまりにも長すぎると不都合があったのでしょうけれど、少なくとも今の僕にとっては、自動的に改行されると、後々の検索やなんやかやで不都合があるので、これを止めています。
;; 一行が 80 字以上になった時には自動改行する (setq fill-column 80) (setq text-mode-hook 'turn-on-auto-fill) (setq default-major-mode 'text-mode)
上記の部分をコメントアウトする。あるいは、
(setq fill-column 80) (setq text-mode-hook '(lambda () (auto-fill-mode 0))) (setq default-major-mode 'text-mode)
この記述に変更しても、いいかも。
表示行でカーソルが移動するための設定。自動改行を止めているため、特に上下のカーソル移動が表示行で行われないと結構混乱するため、この設定は僕にとっては必須です。
(load "/usr/share/emacs/site-lisp/ce-scroll.el")
現状、Emacs のシェルモードはカラー表示に対応していないため、LS を使うと、カラー情報そのものが表示されてしまう。
これを回避するには、シェルの設定ファイル(Bash なら .bashrc)に、下記の記述を加える。
if [ ${TERM} = "dumb" ] ; then alias ls='ls -F' fi
"dump" 部分は Emacs のシェルモードで echo $TERM し、$TERM にセットされている値を記述する。
(setq transient-mark-mode t)
Ruby スクリプトを作成するときのモード
【設定方法】
「ruby-mode.el, inf-ruby.el, rubydb2x.el, rubydb3.el」を「/usr/share/emacs/site-lisp/ruby-mode/」にコピーして「.emacs.el」に、下記の記述を追加。
(autoload 'ruby-mode "ruby-mode" "Mode for editing ruby source files") (setq auto-mode-alist (append '(("¥¥.rb$" . ruby-mode)) auto-mode-alist)) (setq interpreter-mode-alist (append '(("ruby" .ruby-mode)) interpreter-mode-alist)) (autoload 'run-ruby "inf-ruby" "Run an inferior Ruby process") (autoload 'inf-ruby-keys "inf-ruby" "set local key defs for inf-ruby in ruby-mode") (add-hock 'ruby-mode-hook '(lambda () (inf-ruby-keys) ))
Ruby 用のドキュメント形式 RD を作成するときのモード
【設定方法】
RD-Tools を展開したディレクトリにある「utils/rd-mode.el」を「/usr/share/emacs/site-lisp/」にコピーして「.emacs.el」に下記の記述を追加。
;;; RD-mode (global-font-lock-mode 1 t) (autoload 'rd-mode "rd-mode" "major mode for ruby document formatter RD" t) (add-to-list 'auto-mode-alist '("¥¥.rd$" . rd-mode))
ソフトウェア開発の世界では、変更履歴を「ChangeLog」として記録しておく習慣があるようです。Emacs では、これを支援するために、「C-x 4 a」で、
2003-03-27 Masaya Tomikura <vzx01036@nifty.ne.jp> * 変更したファイル 変更内容
のように定型で記録する機能があります。前述のように元々はソフトウェアの開発場面で使われていたのですが、これって日常的なメモ書きとしても、結構有効だと思います。
; ChangeLog (setq user-full-name "Masaya Tomikura") (setq user-mail-address "vzx01036@nifty.ne.jp") (defun memo () (interactive) (let ((add-log-current-defun-function 'ignore) (memo-file "‾/work/memo.txt")) (set-buffer (find-file-noselect memo-file)) (add-change-log-entry nil (expand-file-name memo-file)))) (define-key ctl-x-map "M" 'memo)
「user-full-name」のところに自分の名前、「user-mail-address」のところに自分のメールアドレス、「memo-file」のところにメモを残すファイル名を記述しておきます。
「一人お手軽 Wiki もどき」ということで、断片的にとったメモを活用する環境。
メモだけでなく、スケジュール管理や ToDo 管理としても、かなり便利。少なくとも僕は早くも手放せない状態になっています。
tar xvzf howm-x.x.x.x.tar.gz cd howm-x.x.x.x mkdir ‾/howm cp ja/*.howm ‾/howm mkdir -p ‾/elisp/howm cp *.el ‾/elisp/howm
あるいは、下記でも可。
tar xvzf howm-x.x.x.x.tar.gz cd howm-x.x.x.x ./configure make su make install
(setq howm-menu-lang 'ja) (add-to-list 'load-path "‾/elisp/howm") (global-set-key "¥C-c,," 'howm-menu) (autoload 'howm-menu "howm-mode" "Hitori Otegaru Wiki Modoki" t)
細かい設定は、http://howm.sourceforge.jp/README-j.html を参考にして記述する。僕自身の howm 関連の設定は下記の通りです。
; howm 設定 (setq howm-menu-lang 'ja) (add-to-list 'load-path "‾/elisp/howm") (global-set-key "¥C-c,," 'howm-menu) (autoload 'howm-menu "howm-mode" "Hitori Otegaru Wiki Modoki" t) (setq howm-menu-refresh-after-save t) ; save 時にメニューを自動更新 (setq howm-list-title t) ; タイトルを表示 (setq howm-view-summary-persistent nil) ; 一覧バッファを消す. C-u して [return] だと, 一覧を残す. ;; メニューファイルを直接指定 (setq howm-menu-top nil) (setq howm-menu-file "0000-00-00-000000.howm") ;; 予定とToDoの表示数 (setq howm-menu-schedule-days-before 0) ;; 今日から (setq howm-menu-schedule-days 14) ;; 2週間後まで (setq howm-menu-todo-num 50)
「C-c ,,」でメニューが起動するので、後は適当に。