hns - 日記自動生成システム - Version 2.19.9

先月 2010年12月 来月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

2010年12月24日(金) 旧暦 [n年日記] [更新:"2010/12/25 00:03:18"]

#1 [Emacs] Emacs Advent Calendar JP 2010 24日目

これは Emacs Advent Calendar JP 2010 の 24 日目の記事です。 昨日 23 日目は kozo2 さんの jk は上下移動だろjk でした。 明日は shyohex さんです。
結局、準備的に、 21 22 23 日等に書いたことからは、話題は増えなかったので、 Emacs に対する思い等から始めます。

何故 Emacs が良いか、:

というのは、 文書やプログラムを作成する時に、
使い勝手 (user interface) がどこでも同じ
に尽きると思うのです。 これは、ある意味で Emacs を使っている方々の暗黙の了解というか、当り前なことだとは思います。
大昔に Apple Computer (現在の Apple) が User Interface Guideline という本を作って GUI の U/I (User interface) は統一する必要がある、としました。 もし Mac OS が使いやすい、と思っている人がいるとすると、この本に書いてあった ことや、それを守らせようとした努力も、その理由の一つになっていると思います。
Emacs でも、(キー割当がいろいろあって覚え難いと思っている人達も多くいるとは 思いますが)それでも「文字が沢山書いてあるもの」を作る方法としては、 いつも同じ操作で使えて便利、と感じている人が多いと思います。 ここで書いている同じ操作、というのは、 カーサの移動、日本語の入力方法、 文字の削除や、切取(cut)、貼付(paste)、やり直し(undo)等の基本的な操作のことです。
例えば、だから、mail (wl)twitter 等も Emacs の中から書けるようにしたい、 という努力を惜しまないのだと思っています。(本当に有難く使わせてもらっています)
僕の場合は T-code で日本語を入力しているので、最初の頃は、 日本語入力は Emacs からだけでした。それも Emacs を使い続けていることの理由の一つ でもあります。(OS は NetBSD 限定です)

あまり設定をしないで、なるべく標準的なままで使う:

Emacs 使いの方は、~/.emacs 等に数多くの設定をして使うのが普通だと 思います。それももちろん便利で楽しいと思いますし、実は自分でも 次のような行数の設定はあります。(「どこが標準的なままか」ですが)
u4@makoto 18:24:02/101224(~)% wc ~/.emacs
    1601    4791   58693 /home/makoto/.emacs
u4@makoto 18:24:06/101224(~)% sed '/^;/d' ~/.emacs |wc
     891    2109   28421
u4@makoto 18:24:10/101224(..editors/xemacs-packages)% 
(行数が多いのは、殆どべタに書いていて、整理していない、とか、 以前に使っていて今は使っていないものもそのままになっているという所為もあります)
なるべく標準的なままにしたい理由は簡単に言うと二つあって、
  1. 多くの人に共通の説明を書きたい、その場合にあまり特殊なことは避けたい
  2. 特殊なことをすると、その(時間的)保守費用も無視出来ない (要するに、しばらく使わなかった機能は後で見て分らなくなることがある)
というようなことかと思います。

全部の機能を使う必要はない:

どんな道具でもそうですが、まず使い始めて見て、最低限の機能を覚えて、 使っているうちに、ああ、こんな便利な機能があるのか、 教えられたり、と気が付いたりして、だんだん楽しくなるというか、はまって行く訳です。 (話は飛びますが、 英語も人と通信する道具だと思えば、全く同じだと思います)
僕は、
  • とにかく使い始めることが出来る
  • (物理的、あるいは通信機能的に) 身近に、教えてくれる人がいる
  • だんだん機能を覚えて使い込んでいける
がとても大切だと思っています。
(時にはすごく便利なのに、全く、長く気付かないものもあったりして、 それも、良いのでは、と居直っています)

良く使っている機能:

ここからが本題で、数日前から 準備的に書いたこと と重複しますが、 自分でも良く使っていて、また Emacs を使う理由にもなっていて、 他の人にも使って欲しいなと思う項目を三つ挙げます。
  • C-u C-SPC ( set-mark-command の前置引数付)
  • アウトライン副モード
  • 長方形操作

C-u C-SPC (set-mark-command の前置引数付):

(特に設定をしなくても) 大きな移動をした後には、以前のカーサ位置を覚えてくれて いるので C-u C-SPC とすると、表示がそこに戻ります。
文字列で検索して遠くに移動し、変更した後に、検索する前のところに戻る、 *1 というような時に使えます。 こういうのは、説明 (M-x info RET memacs) を 丁寧に読むか、人に教わらないと気が付かないものかと思います。
似た話で逆順に整列する、 C-u M-x sort-lines も、しばらく(長い間)忘れていて、 そういう機能がないな、と不便をしていたことがあります。

アウトライン副モード:

M-x outline-minor-mode RET
と入力するだけで、使えることが多いです。 「多いです」と書いたのは、「見出を決める outline-regexp が 設定済の場合には」の意味で、あまり普通の人の使わないモードや編集内容だと、 その outline-regexp を設定する必要があるからです。
アウトライン副モードでは、 もともとのキー割当は C-c @ で始まるのですが、'C-c @ C-何とか' は入力しにくいので、 僕は次のようにしています。
(setq outline-minor-mode-prefix "\C-c\C-m");
設定はこれだけです。ただし、いつも M-x outline-minor-mode RET と入力するのは大変だし、使うことを忘れてしまう、 とか outline-regexp が設定されていない場合などがあり、便利のため、 他に二点と、時にもう一点ありました。
  • outline-minor モードを自動で起動する 例えば find-file-hook に設定する。以下は実用的ではないけれど書き方の例
    (add-hook 'find-file-hooks
              (function (lambda ()
                          (if (string-match "\\.rd$" buffer-file-name)
                              (progn 
                                (set (make-local-variable 'outline-regexp) "^[=!:]+")
                                (outline-minor-mode t) ))
                          )))
    
  • (場合によっては)、例えば上のように、 見出を決める正規表現 outline-regexp の値を設定しておく
  • 見出の段階は通常文字数で決まるけれど、それを変更したい時に outline-level に設定する (僕は使わないで、文字数で決まることに妥協しています)
ただ、良く使う場合として、特殊な設定というか、安易に、
Local Variables:
outline-regexp: "[=!:]+"
End:
のように編集対象に書込んでしまうこともあります (この時 ^は不要です、といいますか、勝手に付けられてしまいます)。 実のところ、僕が良く使うのは、次のものくらいです。
C-c C-m C-q 一番上位見出だけ        (quiet)
C-c C-m C-i 次の見出を追加          
C-c C-m C-e カーサ位置の見出を表示  (entry)
C-c C-m C-a 全文表示                (all)
C-c C-m C-t 全ての見出だけを表示    (tree)
説明が面倒だけれど、使うと手離せなくなるほど便利なのがこまったもの。
このくらいの説明では、理解出来ないかと思いますが、 ちょっと関連説明がありました。 (上記 URL 先内容は本の内容の補足になっていますが、内容は本の参照はしなくて、完結しています。 先程、少し直しました)

長方形操作:

vi を使わざるを得ない場面で、この長方形操作があったならな、 と思うことは良くあります。 長方形操作は別画面 (PDF 形式) を見て下さい。

その他、まとまりが一層良くないですが、
21日 (下書き)
22日 (procmail-mode)
23日 (C-h と backspace の交換がうまく行っていない、init-file のこと)
に書いたことも、見て下さい。ありがとうございます。

明日の Emacs Advent Calendar JP 2010shyohex さんです。


*1: Rubikichi さんの本だと p117 の goto-chg.el の項目に、 「C-u C-SPC を繰返すことでいつかは戻れます」という説明があります。

Comments related this article

Re: Emacs Advent Calendar JP 2010 24日目 by すがわら    2010/12/25 01:40
C-u SPC 便利ですよね。後からここを見に来た人のためにもうひとつ。C-x C-x も便利で...
C-x C-x, generic.el by Makoto Fujiwara    2010/12/25 22:57
C-x C-x exchange-point-and-mark は、時々思い出すのですが、実はあまり使ったことが...


最近の日記
2017年11月12日

su: setting user context: Socket operation on non-socket
2017年11月05日
里芋収穫
2017年11月04日
install to raid
8GB memory x 2
2017年10月22日
lang/rustc 1.20.0 still fails at bootstrap
2017年10月15日
wip/rust
以上、1 日分です。
タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project

Count.cgi (since 2000/02/05)