sara

[日記]sara

emacsのメモ

環境

  • CentOS
    • Mac OS からSSHする
  • Emacs23.4

ダウンロード

$ wget http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-23.4.tar.gz
$ tar zxvf emacs-23.4.tar.gz
$ cd emacs-23.4/
$ ./configure --without-x  # GUIがない場合はx要らない
$ make
$ sudo make install

構成

特にインストール先を指定しなければ/usr/local/share/の下にemacsディレクトリができた。

emacs

┣23.4
┃┣etc          # NEWやライセンス等
┃┣leim        # EmacsのIM
┃┣lisp         #  Elispが格納、Emacsの全て
┃┗site-lisp   # ユーザのElispをインストールする場所(バージョン依存?)
┗site-lisp      # Emacsのバージョン関係なく使える?

設定ファイル

設定ファイルは以下のファイルのうち、優先順位に従って一つ読み込まれる

  • ~/.emacs.el > ~/.emacs > ~/.emacs.d/init.el > ~/.emacs.d/init

前準備

キーバインド

本とかネットなどに書いてある書式。この通りに押すとミニバッファに出力される

キー 意味
C-x Control(Ctrl)を押しながらxを押す
C-x C-c Controlを押しながらxを押した後、Controlを押しながらcを押す
C-x → Controlを押しながらxを押した後、右矢印キーを押す
M-x メタキー(Alt)を押しながらxを押す
C-M-v ControlとAltを押しながらvを押す

|C-x RET f|Controlを押しながらxを押した後、Return(Enter)を押し、fを押す|

|C-SPC|Controlを押しながらSpaceを押す|

最重要コマンド

  • C-x C-c(脱出)
    • 使い方がわからん時にEmacsでファイルを開かれると、もうターミナルごと落とすしかなくなるので脱出するコマンドだけ覚えておく。なにかあったらC-x C-c!
  • C-g(操作キャンセル)
    • よくわからん状態になったらこれ。だいたい元の画面に戻れる

Mac OSのターミナルを使っている場合

EmacsではAltキーをMetaキーとして使う(事が多い)。ただし、Max OSのターミナルは設定を変えないとAltをメタキーとして使う事ができない。

例えば

  • C-v 次の画面に進む
  • M-v 前の画面に戻る

というコマンドがあり、C-vは普通に使えるが、M-vを押すと「ƒ」を出してしまう。[1]

メタキーとして使うにはターミナルの環境設定 => 設定 => キーボードタブの「メタキーとしてoptionキーを使用」にチェックを入れる

ファイル操作

$ emacs FILE_NAME でもファイルを作る&開く事はできるが、ここはemacsを起動した状態からファイルを開く。

キー 動作 備考
C-x C-f ファイルを開く ミニバッファからファイル名を入力できる(Tabで補完もきく)。((存在しないファイル名を指定した場合はバッファが作成される。))
C-x C-s ファイルを保存 変更を実際のファイルに書き込む
C-x s 開いている全てのファイルを保存 変更を実際のファイルに書き込むy/n等で1つずつ確認して保存できる
C-x C-w ファイルを別名保存 ファイルを別名保存する
C-x i 別ファイルの内容を流し込む 指定した別ファイルの内容を流し込む
C-x RET f 文字コード、改行コード変換 ミニバッファから文字コード、改行コードを変更できる、後述
C-x b バッファ切替 現在保持しているバッファの中から開くファイルを切り替える
C-x → バッファ切替 順番にバッファのファイルを切り替える
C-x ← バッファ切替 順番にバッファのファイルを切り替える
C-x k バッファ消去 現在保持しているバッファの中から消去するファイルを選択する

文字コード、改行コード操作

C-x RET f で文字コード、改行コードを変更できる。ミニバッファに

Coding system for saving file (default:nil):

と表示されるので、文字コードと改行コードを選択する。Tab補完がきく。その中で(自分が)使いそうなものを幾つか。

コマンド 動作
utf-8 utf-8に変換
utf-8-dos utf-8に変換し、改行コードをCR+LF(Windows)に変換
utf-8-unix utf-8に変換し、改行コードをLFに変換
utf-8-mac utf-8に変換し、改行コードをCRに変換
sjis sjisに変換
sjis-dos sjisに変換し、改行コードをCR+LF(Windows)に変換
sjis-unix sjisに変換し、改行コードをLFに変換
sjis-mac sjisに変換し、改行コードをCRに変換

カーソル操作

ファイル内を移動する。

キー 動作 備考
C-f 一文字進む -
C-b 一文字戻る -
C-n 一行進む -
C-p 一行戻る -
C-a 行頭へ -
C-e 行末へ -
C-v 一画面下へ -
M-v 一画面上へ -
M-<(M-S-,) バッファの先頭へ -
M->(M-S-.) バッファの終端へ -
M-g M-g 指定した行番号へ Goto line: と表示され、入力した行番号へジャンプする
--
M-<(M-S-,)

--

M-v
--
           C-p
C-a    C-b  _  C-f      C-e
           C-n
--
C-v

--

M->(M-S-.)
--

文字列操作

文字をコピーしたり。

キー 動作 備考
C– アンドゥ?リドゥ? 何か動作原理がよくわからんけど、とりあえずアンドゥはしてくれる?
C-x u アンドゥ?リドゥ? 何か動作原理がよくわからんけど、とりあえずアンドゥはしてくれる?
C-d 一文字Delete -
C-k 一行消去 空行は残る(カーソルが文末にある場合のみ改行を消去)、カーソルが行頭にない場合そこから改行を除く文末まで消去
M-; コメントアウト系 空行だと# 挿入、コメント行だと文頭へジャンプ、部通の行だと文末に# 挿入
キー 動作 備考
C-SPC マーク 文字列操作の起点。現在の位置を記録(マーク)する。カーソルを動かすとマークからのカーソルの位置まで選択される(リージョン)
C-w カット リージョン部分をカット
M-w コピー リージョン部分をコピー
C-y ペースト コピー、カットした内容をペースト

ウィンドウ操作

画面を分割したり。

キー 動作 備考
C-x 2 ウィンドウ水平分割 今の画面を水平に分割
C-x 3 ウィンドウ垂直分割 今の画面を垂直に分割
C-x o ウィンドウ移動 カレントから他の画面に移動
C-x 1 自分以外のウィンドウを閉じる -
C-x 0 自分のウィンドウを閉じる -

ディレクトリ操作

Emscsを開いたままディレクトリを操作できる

キー 動作 備考
C-x d ディレクトリを開く ディレクトリ操作の起点。ファイルを開く(C-x f)のと同じようにディレクトリを指定してディレクトリを開く

ディレクトリ操作モード

キー 動作 備考
q ディレクトリモードを抜ける -
C– 直前の作業を戻す -
+ ディレクトリ作成
RET またはf 現在行のファイルを選択 ファイルならオープンしようとする、ディレクトリなら中に入る
R ファイル(ディレクトリ)名リネーム 現在カーソルがある行がリネーム対象※
D ファイル(ディレクトリ)削除 現在カーソルがある行が削除対象※
C ファイル(ディレクトリ)コピー 現在カーソルがある行がコピー対象※

※後で覚える: マーク (一応消し方だけ *-!)

[1] 一応、デフォルトでもescを押してからvとすると前の画面に戻るができるが、連打もできないししんどい。