Diff of UNIX/便利な技/emacsの技


#navi(UNIX/便利な技)
emacs のキー操作、マウス操作の一覧です。
これがすべてではありません。自分で設定もできますし。
設定に関しては .emacs のほうを参照してください。~
また、
[[Tips - xyzzy - :http://www.uranus.dti.ne.jp/~shiro-/soft/xyzzy/index.html]]
のページなども参考になると思います。
ちなみに xyzzy とは emacs ライクな Windows 用 Editor です。自分は Windows では 
NTemacs を使っていますけど。

#contentsx

*キー操作 [#u16f291d]

M とは Meta キー (◆、なければ Alt または Esc キー) のことです。
Esc の場合、Esc を押してから一旦離します。
Alt の場合、Ctrl と同じく押しながら、続きのキーを押します。
C はもちろん Ctrl キーです。

すべてのショートカットキーと emacs コマンドは一対一対応していますが、
ショートカットキーである場合、コマンド部分は省略します。
**カーソル移動 [#f0263eb4]

できるだけ十字キーやマウスに頼らずにこれらのキーを使うと
玄人っぽいといいますか、
実際入力が速くなります。覚えましょう。
|C-f|カーソルを一文字前方(Forward)へ移動|
|C-b|カーソルを一文字後方(Back)移動|
|C-p|カーソルを前行(Previous)に移動|
|C-n|カーソルを次行(Next)に移動|
|C-a|カーソルを行頭に移動(アルファベットの最初の文字)|
|C-e|カーソルを行末(End)に移動|
|M-f|カーソルを1単語(文節)分前へ移動|
|M-b|カーソルを1単語(文節)分後へ移動|
|M-a|カーソルを段落の先頭に移動|
|M-e|カーソルを段落の末尾に移動|
|C-v|1ページ分下へスクロール|
|M-v|1ページ分上へスクロール|
|C-l|カーソル位置の行がウィンドウの中央に来るようにスクロール。再描画|
|M-<|カーソルをファイルの先頭に移動|
|M->|カーソルをファイルの最後に移動|
|M-{|1パラグラフ前方へ移動|
|M-}|1パラグラフ後方へ移動|
|M-x goto-line|指定行へ移動|
**ファイル操作 [#x7209004]

|C-x C-f|ファイルの読み込み(Find)|
|C-x C-r|ファイルのリードオンリーで読み込む|
|C-x C-q|ファイルのリードオンリー状態の切り替え|
|C-x C-s|現在のファイルに保存(Save)|
|C-x C-w|指定したファイルに保存(Write)|
|C-x C-c|エディタを終了する。|
|C-x k|強制終了する|
|C-x b|バッファを開く|
|C-x C-b|バッファリストの表示|
|C-x s|現在あるバッファをすべてセーブする。|
|C-i|現在のカーソル直後にファイルを読み込む|
|C-u C-x C-w|文字コードを指定しての C-x C-w|

**マーク、削除、切り取り、貼り付け [#k833923b]

リージョンとはマークした位置から現在のカーソル位置までの領域を指します。
|<BS>|カーソルの左の文字の削除|
|C-d|カーソル位置の1文字を削除|
|M-<BS>|カーソルの直前の単語を削除し、クリップボードへコピー|
|C-k|カーソルのある位置から行末までを削除し、クリップボードへコピー|
|C-<Space>|マークをカーソル位置に設定|
|C-@|同上|
|M-@|単語の最後にマークを設定|
|M-h|パラグラフをマーク|
|C-x h|バッファ全体にリージョンを設定する|
|C-x C-p|同上|
|C-w|リージョンを削除し、クリップボードへコピー|
|M-w (Alt-w)|リージョンをクリップボードへコピー|
|C-x x '''r'''|C-wのようにに選択した領域を '''r''' という識別子のレジスタにコピーする。違うレジスタに記録すれば、いくつも保持しておくことができる。|
|C-x g '''r'''|'''r''' レジスタの内容をペーストする。|
|M-<BS>|カーソルの左の単語の削除|
|C-y|クリップボードの内容をペースト|
|C-x C-o|カーソル位置の空白行を削除する|
|M-\|カーソル周辺の空白文字を削除する|
**検索、置換 [#baf8abcb]

|C-s|前方検索。C-s を繰り返せば前方に移動。C-r を繰り返せば後方に移動|
|C-r|後方検索。C-s を繰り返せば前方に移動。C-r を繰り返せば後方に移動|
//|C-s Enter|前方検索(カーソルがミニバッファに移る)|
//|C-r Enter|後方検索(カーソルがミニバッファに移る)|
|C-u C-s|正規表現による前方検索。C-s を繰り返せば前方に移動。C-r を繰り返せば後方に移動|
|C-u C-r|正規表現による後方検索。C-s を繰り返せば前方に移動。C-r を繰り返せば後方に移動|
|M-x replace-string|カーソルより下のマッチした語を置換|
|M-% (M-x query-replace-string)|カーソルより下にある語を対話形式で置換。y で確定。n で拒否。! で全置換。? でヘルプ表示。|
|M-x replace-regexp|正規表現を指定できる replace-string|
|M-x query-replace-regexp|対話形式で replace-regexp|

''emacs の正規表現''

まず基礎として[[正規表現]]のページを参照しておいてください。
emacs の正規表現には癖があって、正規表現のグループ化が () ではなく、 \(\) になります。 ( は通常の文字である ( にマッチします。
また、後方参照は、\N (N は数字の意) になります。
M-x M-x replace-regexp を使用するまえに、まず C-u C-s でインタラクティブに、、マッチするかどうかチェックしておくとやりやすいと思います。


例1) M-x replace-regexp を用いて
 <a href="http://www.google.com">
 <a href="http://www.google.co.jp">
とい文字列を(HTML)
 http://www.google.com
 http://www.google.co.jp
のように置換したい場合
 Replace Regexp: <a href="\([^"]*\)">
 with: \1
のようにするとできます。

例2) M-x replace-regexp を用いて
 Equation (\ref{eq:Poisson})
 Equation (\ref{eq:Bernoulli})
という文字列を(TeX)
 Equation \ref{eq:Poisson}
 Equation \ref{eq:Bernoulli}
のように置換したい場合、
 Replace Regexp: Equation (\(\\ref{[^}]*}\))
 with: Equation \1
のようにするとできます。


例2) 最近の emacs では他にもいろいろとできるようです。例えば行頭に連番を挿入したい場合
 Replace Regexp: ^\(\)
 with: \,(1+ \#)
とするとできるようです。

このようなプログラマブルな replace-regexp は[[新Emacsの強力な置換機能を使いこなす>http://japan.zdnet.com/print/0,2000080657,20350805-2,00.htm?u=/zdnet/2006/oss/story/0,3800075264,20350805-2,00.htm]] のページが参考になります。
**ウィンドウ操作 [#vc2efbf1]

|C-x 2|ウィンドウを上下に分割|
|C-x 3|ウィンドウを左右に分割|
|C-x o|分割ウィンドウ間を移動|
|C-x 0|カーソルのある分割ウィンドウを閉じる|
|C-x 1 |カーソルのない分割ウィンドウを閉じる|
|C-x -|分割ウィンドウを縮小(但し小さくする方のファイルの大きさまでにしか小さくならない)|
|C-x +|分割ウィンドウを拡大(どちらかというと、縮小したウィンドウを戻す感じ)|
|C-x 4 f|上下に分割したウィンドウでファイルを検索する|
|C-x 4 d|上下に分割したウィンドウでdiredモードを開く|
|C-x 4 m|上下に分割したウィンドウで新規mailを開く|
|C-x 5-2|新しいウィンドウを開く(C-x C-c で閉じるとすべて終了してしまうので注意)|
|C-x 5-o|ウィンドウ間を移動|
|C-x 5-0|カーソルのあるウィンドウを閉じる|
|C-z|アイコン化|

ウィンドウの分割幅は任意に指定できます。
 C-u 9 C-x 2
で上の幅が9行のウィンドウが作れます。

**日本語変換 [#g528aaf2]

|LEFT:30||c
|C-\|日本語入力への切り替え|
|C-p|前候補|
|C-b|次候補|
|C-u|アルファベット大文字|
|C-l|アルファベット小文字|
|C-o|文節をのばす(重要)|
|C-i|文節を縮める(重要)|
|@|記号入力。例えば@にょろで 〜|
|z|記号入力。例えばフェンスモードの状態で zt で 〆。一覧は下|
|Z|全角入力。例えばフェンスモードの状態で Zp で p|
|q|アルファベット入力。一時的に日本語に変換されなくなる。RETURN(決定) で戻る|
|Q|全角英数字入力。RETURN(決定) で戻る |
|C-\|フェンスモードの状態で入力するとそれまでの入力に続けてアルファベットを入力できる。漢字変換を行うには再度 C-\ で戻す|

***z 記号一覧 [#u2d6aeb9]
|z1|○|
|z!|●|
|z2|▽|
|z@|▼|
|z3|△|
|z#|▲|
|z4|□|
|z$|■|
|z5|◇|
|z%|◆|
|z6|☆|
|z^|★|
|z7|◎|
|z&|£|
|z8|¢|
|z*|×|
|z9|♂|
|z(|【|
|z0|♀|
|z)|】|
|z-|〜|
|z_|∴|
|z=|≠|
|z+|±|
|z\|\|
|z&#x7c;|‖|
|z`|´|
|z~|¨|
|zq|《|
|zQ|〈]|
|zw|》|
|zW|〉|
|zr|々|
|zR|仝|
|zt|〆|
|zT|§|
|zp|〒|
|zP|↑|
|z[|『|
|z{|〔|
|z]|』|
|z}|〕|
|zs|ヽ|
|zS|ヾ|
|zd|ゝ|
|zD|ゞ|
|zf|〃|
|zF|→|
|zg|‐|
|zG|―|
|zh|←|
|zj|↓|
|zk|↑|
|zl|→|
|z;|゛|
|z:|゜|
|z'|‘|
|z"|“|
|zx|:-|
|zX|:-)|
|zc|〇|
|zC|℃|
|zv|※|
|zV|÷|
|zb|°|
|zB|←|
|zn|′|
|zN|↓|
|zm|″|
|zM|〓|
|z,|‥|
|z<|≦|
|z.|…|
|z>|≧|
|z/|・|
|z?|∞|

***Egg + Wnn ローマ字かな変換規則一覧。 [#lb55f1a7]
.emacs で定義することも可能です。
|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|を|
| | | | | | | | | | |
|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|ぽ|
| | | | | | | | | | |
|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|ぴょ|
| | | | | | | | | | |
|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|りょ|
| | | | | | | | | | |
|n| ん|n'|ん|N|ん|||| |
| | | | | | | | | | |
|xa|ぁ|xi|ぃ|xu|ぅ|xe|ぇ|xo|ぉ|
|xya|ゃ| | |xyu|ゅ| | |xyo|ょ|
| | | | |xtu|っ|||| |
| | | | |xtsu|っ|||| |
|xwa|ゎ|xwi|うぃ| | |xwe|うぇ|xwo|うぉ|
|xka|ヵ| | | | |xke|ヶ|| |
| | |xti|てぃ|||||| |
| | |xdi|でぃ| xdu|どぅ|xde|でぇ| xdo|どぉ|
| | | | | | | | | | |
|kwa|くゎ|kwi|くぃ|kwu|く|kwe|くぇ|kwo|くぉ|
|gwa|ぐゎ|gwi|ぐぃ|gwu|ぐ|gwe|ぐぇ|gwo| ぐぉ|
|tsa|つぁ|tsi|つぃ|tsu|つ|tse|つぇ|tso| つぉ|
拗音(っ)は子音を2つ続けても入力できます。
**英大文字、英小文字変換 [#p15b2752]

|C-x C-l|リージョン内の英大文字を英小文字に変換する|
|C-x C-u|リージョン内の英小文字を英大文字に変換する|
|M-c|カーソル前方の1単語の頭文字だけ大文字に、残りを英小文字にする|
|M-l|カーソル前方の1単語の英大文字を英小文字にする|
|M-u|カーソル前方の1単語の英小文字を英大文字にする|

**入力 [#b21df89e]

|M-[num]|[num]回のコマンド入力。M-5 C-u とすると C-u 5回。M-5 t なら ttttt。|
|C-[num]|上に同じ|
|C-u [num]|上に同じ [num] を指定しない場合は 4 回 C-u C-u とすると 16 回。|
|C-t|カーソル位置と直前の文字を入れ替える|
|C-j|RETURN|
|C-m|RETURN|
|C-i|TAB|
|C-o|カーソル位置で改行|
|M-C-o|カーソル位置で、行を分割する。カーソル右にあったテキストは、桁位置を保ったまま、次の行に送られる。|
|C-q|制御コードの入力。例えば C-q C-l とすると ^L が入力される。C-q 143 で 8進 ASCIIコードで 0143 である c が入力される。|

**その他 [#e0d24c82]

|C-^|記号、ギリシャ文字などの入力。上の階層に戻るには Ctrl-g|
|C-h T|日本語チュートリアル|
|C-h t|英語チュートリアル|
|C-h i|インフォ(Imformation)の利用|
|C-/|Undo|
|C-x u|Undo|
|C-g|コマンドの中断、リージョン解除|
|C-[|Esc|
|C-]|IPAモード(quail-mode)との切り替え。その後 M-s を入力し、hangul でハングル、hanja-ksc で韓国語の漢字を入力できる。M-z でヘルプがでます。|
|M-#|カーソルの位置,または右にある単語のスペルチェック|
|Insert|会津大学のキーボードでは Ovwt モードのオンオフ。オフの仕方は覚えてきましょう。また、テンキー(キーボードの右側)の 0(Ins) を押してもなります。|

**スペルチェック [#r0bc1f33]

|M-x spell-word|カーソルの位置,または右にある単語のスペルチェック|
|M-x spell-region|現在指定されているリージョンに含まれる単語のスペルチェック|
|M-x spell-string|エコーエリアに入力した文字のスペルチェック|
|M-x spell-buffer|現在編集しているバッファに含まれる単語のスペルチェック|
|M-x ispell-buffer|現在編集しているバッファに含まれる単語のスペルチェック。単語にフォーカスが飛ぶ。|

**変換 [#z7278a05]

 M-x set-file-coding-system
文字コードを変換できます。
以下の文字コードを指定します。
|改行\文字|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|
 M-x hankaku-region
全角アルファベットの領域を選択して実行すると半角に変換します。

**Wnn 辞書登録 [#k2c27ef0]

|M-x toroku-region|選択した範囲の文字を辞書に登録|
|M-x edit-dict-item|辞書の編集|
|M-x set-wnn-host-name|wnn サーバーのホストを指定|

**メール (mh-e) [#t3fc677a]

|M-x mh-smail|メールを送る|
|M-x mh-rmail|メールを読む|
|M-r|M-x mh-rmail 時、既読メールの表示|
複数人にメールを送るときは、
 To: xxx@docomo.co.jp, xxxx, xxx
のように , (カンマ)で区切って記述します。
To: に書くと全員に全員のメールアドレスがわたってしまいますが、
 Bcc: xxx@docomo.co.jp, xxxx, xxx
のように Bcc: を追加して宛先を記述すれば他の人のアドレスがわからないようにできます。

より詳しくは
[[How to use mh-e:http://www.echo.nuee.nagoya-u.ac.jp/active-guide/mh-e.html]]や
[[mh-e コマンドリファレンス:http://www.kyoto-su.ac.jp/ccinfo/08_supports/08-mhe_command/]]
などを読むといいと思います。
**shell [#vff0f62c]

|M-x shell|emacs 上で eshell と呼ばれるシェルを起動。ls, cd などコマンドを打てます。emacs を画面分割して一画面をシェル画面にしておくと、コマンドラインに移る際に emacs の分割画面移動のショートカット C-o を使用するだけで済み、楽です。|
|M-x shell-command|コマンドを実行|
**モード [#h598872f]

その形式のファイルを編集するのにあったモードに変更します。
大抵はプログラミング用です。
特定の拡張子のファイルならば開いた時点でそのモードになります。
|M-x shell-mode|shll mode|
|M-x c-mode|c mode|
|M-x java-mode|java mode|
|M-x prolog-mode|prolog mode|
|M-x tex-mode|tex mode|
モードが指定されていたら
 M-x indent-region
で選択リージョンをきれいにインデント(字下げ)することができます。

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

特定の column (列)位置で折り返させることができます。
ただの txt ファイルを編集しているときに使用したりします。
|M-x auto-fill-mode|自動折り返し機能のオン、オフ|
|M-x fill-paragraph|1パラグラフ自動折り返し|
|M-x fill-region|選択リージョン自動折り返し|

**Directory Editor [#n7cd4e9d]

 M-x dired
または
 C-x d
で Directory Editor を起動できます。いろいろできます。
詳しくは[[GNU Emacs Manual - Dired Edit - >http://flex.ee.uec.ac.jp/texi/emacs-jp/emacs-jp_81.html]] または
[[Info Node: (emacs-ja)Dired>http://mibai.tec.u-ryukyu.ac.jp/cgi-bin/info2www?(emacs-ja)Dired]] を参照するとよいでしょう。
*マウス操作 [#hc19d86c]
|左クリック|カーソル移動|
|左ドラッグ|リージョンを指定し、クリップボードにコピー|
|右クリック|リージョンを指定し、クリップボードにコピー|
|右クリック二回|カット|
|左クリック→右クリック|リージョンを指定し、クリップボードにコピー|
|左クリック→右クリック二回|カット|
|中クリック|ペースト|
|モードライン上で中クリック|1つにウィンドウに2つ以上のバッファがあるときそのバッファのみを表示。モードラインとは下のミニバッファとの境界線のことです。|
|C-左ボタン|バッファメニュー|
|C-右ボタン|フォントメニュー|
|C-中ボタン|スクロールバーやモードライン上で、ウィンドウを分割します|
|C-左ダウン|バッファメニュー|
|C-右ダウン|フォントメニュー|
|C-中ダウン|スクロールバーやモードライン上で、ウィンドウを分割します|

#navi(UNIX/便利な技,,footer)
xrea