Diff of UNIX/設定、設定ファイル/.emacs


TITLE:.emacs - emacsの設定
#navi(UNIX/設定、設定ファイル)

.emacs は emacsen (emacs, xemacs, mule 等)の設定ファイルです。
emacs を一度でも実行していればホームディレクトリ直下にあるはずです。
ls -a で確認してください。
.emacs は Emacs Lisp という言語で記述されています。; でその行をコメントアウトすることができます。

#contentsx
-拡張 el
#lsx(prefix=UNIX/学生ツール/emacs/,alias)
#lsx(prefix=UNIX/学生ツール/emacs/,linkstr=title)

**新規作成時の文字コードの変更 [#w0683fc6]
 ; 新バッファ作成時のファイル文字コードを *euc-japan* にします。
 (set-default-file-coding-system *euc-japan*)
のようにして新バッファ作成時の文字コード、改行コードを設定できます。
文字コードの扱いとしては、基本的に、Mac だと JIS で、
Windows が Shift_JIS、UNIX が EUC という日本語文字コードを使います。
さらに、UNIX は改行コードとして LF (プログラミングで \n と書きますよね。あれです。)、Mac が CR (\r)、Windows が CR と LF (\r\n) を使います。
で、結局どのように指定するのかというと、以下の表のようになります。
|改行\文字|iso-2022-jp (JIS)|Shift_JIS|EUC-Japan|
|LF|*iso-2022-jp*unix|*sjis*unix|*euc-japan*unix|
|CR|*iso-2022-jp*mac|*sjis*mac|*euc-japan*mac|
|CR/LF|*iso-2022-jp*dos|*sjis*dos|*euc-japan*dos|
改行コードがそれぞれの文字コードの右側にくっついているのがわかると思います。*euc-japan* のように改行コードを省略した場合、デフォルトの改行コード(UNIX なので LF)になります。
現在開いているファイルの文字コード、改行コードはファイル名などが表示される、
バッファとミニバッファとの境界線のところに表示されます。たとえば
 [あ]E.:------Mule: test
のようにです。ここでは E と表示されていますが、
J なら JIS、S なら Shift_JIS、E なら EUCという意味になります。
改行コードはその隣に「.」と表示されています。
「.」なら LF、「'」なら CR、「:」なら LF/CR です。
改行コードを指定しなかった場合は「_」のようになります。
また、これらの文字コードをファイル編集中に変更したい場合、
 M-x set-file-coding-system
を使うことで変更できます。
ちなみに文字コードの変換は[[nkf>commnad.html#nkf]]というコマンドを使ってもできます。
emacs はどんな文字コードのファイルでも開けるのでとっても便利ですね。

**自動折り返し [#ze9aafc5]

auto-fill-mode とは文章作成時に、 
決められたカラム(列)位置で自動的に折り返し処理を入れる機能です。
メールを書くときなどに便利です。
メールを送るときにすべて1行で書いて送るのはありえないというのは大丈夫ですよね?
 ; Text モードにするとき、常に auto-fill-mode にします。
 (setq text-mode-hook
       '(lambda () (auto-fill-mode 1)))
このようにすると、text-mode のときだけ有効になります。
.txt なファイルを開くか
 M-x text-mode
としましょう。

上のように
 auto-fill-mode 1
と引数に正数が与えられているならばオンに、
負数が与えられていればオフになります。
auto-fill-mode がオンになっている場合、
例の境界線のところに、fill という文字が表示されます。

ちなみに、
 M-x auto-fill-mode
のように emacs を開いた後に実行することもできます。
現在、オンならばオフに、オフならばオンにします。

**C-h に Backspace を割り当てる [#we411449]
 (load-library "term/bobcat")
で、普通は C-h でヘルプが表示されますが、
C-h で Backspace ができるようになります。
ヘルプは
 M-x help
でも表示されるので必要ないでしょう。
tcsh や bash などでは C-h でバックスペースになるので、
emacs でも統一したいと思う人は多いと思います。打ちやすいですし。

term/bobcat がない場合、バージョンによっては
 (define-key function-key-map [backspace] [8])
で C-h に Backspace を割り当てられたと思います。
他にも
 (put 'backspace 'ascii-character 8)
や、後は、
 (setq keyboard-translate-table
 "\^@\^A\^B\^C\^D\^E\^F\^G\^?\^I\^J\^K\^L\^M\^N\^O\^P\^Q\^R\^S\^T\^U\^V\
 \^W\^X\^Y\^Z\^[\^\\\^]\^^\^_ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK\
 LMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\^H")
のように全て割り当てしなおす方法もあったと思います。
**カーソルの位置が何行目か表示 [#lbf7a35a]

 ;カーソルの位置が何行目か
 (line-number-mode 1)
これはプログラミングするときにお世話になるので絶対必要です。
例の境界線のところに L12 とかそんなかんじで表示されます。

**nn で「ん」と確定する [#u65cf302]

 ;nn で「ん」と確定する
 (setq enable-double-n-syntax t)
設定しなくても、shift+n や n' で "ん" と確定できますけどね。

**Egg + Wnn でのローマ字かな変換規則の追加 [#w8153bdf]
 ;;かな変換規則
 (its-defrule "dhi" "でゅ" nil nil "roma-kana")
これで nn → ん にすることももちろんできます。
新規登録ではなく、再定義だと多少時間がかかります。例えば la → ぁ とか。

以下は Egg のローマ字かな対応表です。
|a|あ|i|い|u| う|e|え|o| お|
|ka|か|ki|き|ku|く|ke|け|ko|こ|
|sa|さ|si|し|su|す|se|せ|so|そ|
|ta|た|ti|ち|tu|つ|te|て|to|と|
|na|な|ni|に|nu|ぬ|ne|ね|no|の|
|ha|は|hi|ひ|hu|ふ|he|へ|ho|ほ|
|ma|ま|mi|み|mu|む|me|め|mo|も|
|ya|や|yi|い|yu|ゆ|ye|いぇ|yo|よ|
|ra|ら|ri|り|ru|る|re|れ|ro|ろ|
|la|ら|li|り|lu|る|le|れ|lo|ろ|
|wa|わ|wi|ゐ|wu|う|we|ゑ|wo|を|
|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|
|ga|が|gi|ぎ|gu|ぐ|ge|げ|go|ご|
|za|ざ|zi|じ|zu|ず|ze|ぜ|zo|ぞ|
|da|だ|di|ぢ|du|づ|de|で|do|ど|
|ba|ば|bi|び|bu|ぶ|be|べ|bo|ぼ|
|pa|ぱ|pi|ぴ|pu|ぷ|pe|ぺ|po|ぽ|
|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|
|gya|ぎゃ| | |gyu|ぎゅ|gye|ぎぇ|gyo|ぎょ|
|zya|じゃ| | |zyu|じゅ|zye|じぇ|zyo|じょ|
|ja|じゃ|ji|じ|ju|じゅ|je|じぇ|jo|じょ|
|dya|ぢゃ|dyi|でぃ|dyu|ぢゅ|dye|ぢぇ|dyo|ぢょ|
|bya|びゃ| | |byu|びゅ|bye|びぇ|byo|びょ|
|va|ヴぁ|vi|ヴぃ|vu|ヴ|ve|ヴぇ|vo|ヴぉ|
|pya|ぴゃ| | |pyu|ぴゅ|pye|ぴぇ|pyo|ぴょ|
|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|
|kya|きゃ| | |kyu|きゅ|kye|きぇ|kyo|きょ|
|sya|しゃ| | |syu|しゅ|sye|しぇ|syo|しょ|
|sha|しゃ|shi|し|shu|しゅ|she|しぇ|sho|しょ|
|tya|ちゃ|tyi|ち|tyu|ちゅ|tye|ちぇ|tyo|ちょ|
|cya|ちゃ|chi|ち|cyu|ちゅ|cye|ちぇ|cyo|ちょ|
|nya|にゃ| | |nyu|にゅ|nye|にぇ|nyo|にょ|
|hya|ひゃ| | |hyu|ひゅ|hye|ひぇ|hyo|ひょ|
|fa|ふぁ|fi|ふぃ|fu|ふ|fe|ふぇ|fo|ふぉ|
|mya|みゃ| | |myu|みゅ|mye|みぇ|myo|みょ|
|la|ら|li|り|lu|る|le|れ|lo|ろ|
|rya|りゃ| | |ryu|りゅ|rye|りぇ|ryo|りょ|
|lya|りゃ| | |lyu|りゅ|lye|りぇ|lyo|りょ|
|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|
|n| ん|n'|ん|N|ん|||| |
|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|
|xa|ぁ|xi|ぃ|xu|ぅ|xe|ぇ|xo|ぉ|
|xya|ゃ| | |xyu|ゅ| | |xyo|ょ|
| | | | |xtu|っ|||| |
| | | | |xtsu|っ|||| |
|xwa|ゎ|xwi|うぃ| | |xwe|うぇ|xwo|うぉ|
|xka|ヵ| | | | |xke|ヶ|| |
| | |xti|てぃ|||||| |
| | |xdi|でぃ| xdu|どぅ|xde|でぇ| xdo|どぉ|
|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|&br;|
|kwa|くゎ|kwi|くぃ|kwu|く|kwe|くぇ|kwo|くぉ|
|gwa|ぐゎ|gwi|ぐぃ|gwu|ぐ|gwe|ぐぇ|gwo| ぐぉ|
|tsa|つぁ|tsi|つぃ|tsu|つ|tse|つぇ|tso| つぉ|
拗音(っ)は子音を2つ続けても入力できます。
**バックアップファイル (~ が後ろにつくファイル)を作らない [#t41f60d2]

 ;バックアップファイルを作らない
 (setq make-backup-files nil)

**括弧の対応表示 [#m0391df6]

 ;括弧の対応表示
 (require 'paren)
 ;;色の設定を変えたいときは、次のように書いてください。 
 
 (make-face 'paren-match)
 ; マッチしたときのフォアグラウンドの色
 (set-face-foreground 'paren-match "gray80")
 ; マッチしたときのバックグラウンドの色
 (set-face-background 'paren-match "CadetBlue4")
 
 (make-face 'paren-mismatch)
 ; マッチしなかったときのフォアグラウンドの色
 (set-face-foreground 'paren-mismatch "white")
 ; マッチしなかったときのバックグラウンドの色
 (set-face-background 'paren-mismatch "lightcoral")
 
 (setq show-paren-face 'paren-match)
 (setq show-paren-mismatch-face 'paren-mismatch)
**拡張子 pl を開いた際に perl モードにする [#jd66b700]

デフォルトでは拡張子 pl は Prolog モードになっています。
しかし、perl の 拡張子も一般的には pl です。自分はむしろ perl のほうが使うので変更しています。
 (setq auto-mode-alist
       (cons (cons "\\.pl$" 'perl-mode) auto-mode-alist))
一応 Prolog を plg で登録しておきます。
 (setq auto-mode-alist
       (cons (cons "\\.plg$" 'prolog-mode) auto-mode-alist))

**同様に拡張子 cpp を開いた際に C++ モードにする(デフォルトは cc のみ) [#xa43ec07]

 (setq auto-mode-alist
       (cons (cons "\\.cpp$" 'c++-mode) auto-mode-alist))
Visual C++ などだと拡張子 cpp になるので cpp が良いという人。

**ファイルの終りで移動で新しい行を追加せずに止まるようにする [#b3cf7cc1]
 ;; Stop at the end of the file, not just add lines
 (setq next-line-add-newlines nil)
**常にファイルの最後に newline がくるようにする(Script を書くときに必ず最下行も読み込まれるように) [#x5f23861]

 ;; Always end a file with a newline
 (setq require-final-newline t)
**フレームサイズ、位置、色、フォントなど [#ze2184e4]

 ;; Initial 
 (setq initial-frame-alist
           (append (list
                    '(foreground-color . "azure3") ;; 文字色
                    '(background-color . "black") ;; 背景色
                    '(border-color     . "black")
                    '(mouse-color      . "white")
                    '(cursor-color     . "white")
                    '(menu-bar-lines . 1)
                    ;'(font . "my-fontset") 
                    ;'(vertical-scroll-bars . nil) ;;スクロールバーを消す
                    '(width . 100) ;; ウィンドウ幅
                    '(height . 35) ;; ウィンドウの高さ
                    '(top . 60) ;;表示位置
                    '(left . 140) ;;表示位置
                    )
                   initial-frame-alist)))
 (setq default-frame-alist initial-frame-alist)
initial-frame-alist は起動時のウィンドウサイズやフォント情報などを設定してい ます.
default-frame-alist は,起動後に新しく作るウィンドウのサイズなどえす。
例えば,C-x 5 2でウィンドウを新規の作成する時に使われます.
そもそも initial-frame-alist のところを default-frame-alist に変更してそれだけ
書いても問題ないですけども。font はちょっとめんどくさいので説明しません。
ちなみに自分はこんな色にはしてないです。例えばです。
**選択 region の色 [#ba7738d7]
 (set-face-background 'region "SkyBlue")
 (set-face-foreground 'region "black")
とか
**M-x goto-line を M-g に設定 [#m98d2a4b]

 ;; Set goto-line to M-g
 (global-set-key "\M-g" 'goto-line)

**M-x replace-regexp (正規表現可能な文字列置換)を M-r に設定 [#k98ec5cf]

 ;; Ser replace-regexp to M-r
 (global-set-key "\M-r" 'replace-regexp)

**C-k で改行を含めてカット [#n2d9ad1c]

 ;;;C-k で改行を含めてカット
 (setq kill-whole-line t)

*会津大学ローカル [#mac0ea25]
会津大学標準設定ファイルは /home/student/stdskel/.emacs にあります。~stdskel/.emacs でアクセス するといいでしょう。
編集した結果不具合が生じるようであれば、一旦戻してください。
ちなみに 2003年現在、&ref(.emacs); のようになっています。

.emacs ファイルは会津大ではデフォルトでは書き込み許可がないようです。
chmod コマンドを使って許可をだしてください。具体的には
 % chmod u+w ~/.emacs
のようにします。
デフォルトでは会津大学ローカルな設定はとりわけないようですので、
デフォルト設定についての解説は書きません。コメントも書いてありますし。

**半角カナの入力(gcc サークル提供) [#dc4e1bff]

 (load-file "/home/circle/gcc/src/elisp/gcc-hankaku-region.el")
emacs を一度終了したあと、カナ文字にしたい部分を選択して、
 M-x gcc-hankaku-region
この機能をキーに割り当てるには、.emacs に次を追加。この例では C-t になる
 (global-set-key "\C-t" 'gcc-hankaku-region)
hankaku-region.el はどこかでダウンロードできるはずです。
xrea