UNIX講習会#5 Emacs編


Vim教の方は読まない方が良いかもしれません．

---

## Emacsをダウンロード

    curl -O http://emacsformacosx.com/emacs-builds/Emacs-24.5-1-universal.dmg
    open Emacs-24.5-1-universal.dmg

バージョンアップされた際には http://emacsformacosx.com からダウンロードできる．展開して出てきたファイルを`/Applications`以下にコピーする．

---

## 設定ファイルを導入

この設定ファイルは Emacs 24.5 で使うことを想定しています．OS XやCent OSに標準で入るEmacsでは古すぎて使えないので注意してください．

* 次のURLからダウンロード
  * <small>https://app.box.com/s/4qnw7z9971jrthzrkhkxqy46uogt8gl7</small>
  * 展開してできた`dot_emacs.d`をホーム直下に`.emacs.d`と改名して配置

---

## なぜ Emacs を使うのか？

* スーパーコンピュータにログインしたときには GUI が使えずに， CUI しか使えないときがある．その場合でも使える
* キーボード上でホームポジションから手を動かす必要がないので高速にタイピングができる
* 多くの言語に対して適切な補完ができる
* すべての操作がキーボードだけで完結する
* OS X では標準で基本的な Emacs キー操作に対応している
* テトリスができる
* 五目並べができる
* メーラーになる

---

## C言語でHello Worldをコンパイルして実行するまで

<iframe width="420" height="315" src="https://www.youtube.com/embed/SbiEQbDSdko" frameborder="0" allowfullscreen></iframe>

---

## Emacsを立ち上げる

今回はSSHを想定しターミナルから使ってみる．

```bash
$ emacs
```

![emacs01.png](https://qiita-image-store.s3.amazonaws.com/0/56302/dffd285b-4ae3-309d-adc6-0c80988a2cf9.png "emacs01.png")


---

## Emacsのキー操作の説明の説明

* <kbd>C-x</kbd>: `Control`キーを押しながら`x`を押す
* <kbd>C-x C-c</kbd>: `Control`キーを押しながら`x`を押す．一度放した後に`Control`キーを押しながら`c`を押す．
* <kbd>M-x</kbd>: `Meta`キーを押しながら`x`を押す．通常は`Alt`キーもしくは`Option`キーが`Meta`キーになっている．
* <kbd>M-x view-hello-file</kbd>: `Meta`キーを押しながら`x`を押す．その後，`view-hello-file`と入力する


* Emacsの終了のさせ方: <kbd>C-x C-c</kbd>
* 操作を間違い，中断したいとき: <kbd>C-g</kbd> もしくは <kbd>ESC</kbd>を3回

---

## 初期設定

* Pythonで補完が効くようにするために最初の一回だけ以下のコマンドを実行
  する
* <kbd>M-x jedi:install-server</kbd>
* 一番下の行に `Done` と表示されれば OK

---

## カーソルの移動のさせ方


|移動先      |キー操作      |備考    |
|:-----------|:-------------|:-------|
|上          |<kbd>C-p</kbd>|Previous|
|下          |<kbd>C-n</kbd>|Next    |
|右          |<kbd>C-f</kbd>|Forward |
|左          |<kbd>C-b</kbd>|Back    |
|単語単位で右|<kbd>M-f</kbd>|Forward |
|単語単位で左|<kbd>M-b</kbd>|Back    |
|行の先頭    |<kbd>C-a</kbd>|Ahead   |
|行の末尾    |<kbd>C-e</kbd>|End     |

---

## カーソルキーは使わない！

* 配布した設定ファイルではカーソルキーは別の機能に割り当ててあり，テト
  リスが起動したり，今開いている画面を閉じようとしたりするので注意．

|カーソルキー|コマンド        |
|:-----------|:---------------|
|上          |テトリス        |
|下          |ファイルを閉じる|
|右          |五目並べ        |
|左          |ライブゲーム    |

---

## スクロールなど

|動作       |キー操作      |
|:----------|:-------------|
|次のページ |<kbd>C-v</kbd>|
|前のページ |<kbd>M-v</kbd>|
|カーソルを中央に|<kbd>C-l</kbd>|


---

## ファイル操作

Emacs では作業開始時にファイルを開き，保存するということをする．普通の
ソフトのように，ある程度編集してそれから初めてファイル名を決めるという
ことはしない．ファイルを開くときに存在しないファイル名を指定しても良い．

|コマンド|キー操作      |備考 |
|:-----------|:---------------|:--|
|開く|<kbd>C-x C-f</kdb>|この後にファイル名を指定|
|保存|<kbd>C-x C-s</kdb>||
|別名で保存|<kbd>C-x C-w</kdb>|この後にファイル名を指定|
|閉じる|<kbd>C-x k</kdb>|この後に閉じるファイルを指定|

---

## クリップボードの操作

|コマンド|キー操作      |備考 |
|:-----------|:---------------|:--|
|カット|<kbd>C-w</kdb>| |
|コピー|<kbd>M-w</kdb>| |
|ペースト|<kbd>C-y</kbd>| |
|過去のデータのペースト|<kbd>M-y</kbd>|<kbd>C-y</kbd>に続けて使う|

カット，コピーをしたい範囲は<kbd>C-space</kbd>を使って指定する．開始地
点で<kbd>C-space</kbd>を押し，範囲を指定したら<kbd>C-w</kbd>もしくは
<kbd>M-w</kbd>でカット，コピーをする．ただし，OS Xでは
<kbd>C-space</kbd>はSpotlightが呼び出されるので<kbd>C-@</kbd>で代替す
るか，環境設定のキーボードで無効化する．

---

## その他のキー操作

|コマンド|キー操作      |備考 |
|:-----------|:---------------|:--|
|改行|<kbd>C-j</kdb>|<kbd>C-m</kbd>でも可|
|検索する|<kbd>C-s</kdb>|検索したい文字を入力|
|前を検索|<kbd>C-r</kdb>||
|前の文字を削除|<kbd>C-h</kbd>|配布した設定による|
|後ろの文字を削除|<kbd>C-d</kbd>| |
|もどす|<kbd>C-_</kbd>||
|ヘルプ|<kbd>C-x h r</kbd>|配布した設定による．標準は<kbd>C-h</kbd>|

---

## Auto Complete

* プログラミング言語によっては補完が有効になる
* 強制的に補完させたときには<kbd>C-/</kbd>
* 補完候補が複数出てきたときには<kbd>M-n</kbd>や<kbd>M-p</kbd>で選ぶ

![emacs02.png](https://qiita-image-store.s3.amazonaws.com/0/56302/ae5808fc-0b5a-6875-34f1-93f153e8d4f5.png "emacs02.png")


---

## 複数のファイルを編集する

* ファイルを閉じずに<kbd>C-x C-f</kbd>でファイルを開くと複数のファイルを開いたことになる
* ファイルの切り替えは<kbd>C-x b</kbd>の後に切り替えたいファイル名を入れる
* 部分的に入力すると候補が出てくるので，それでよければ<kbd>C-j</kbd>
* ファイルのリストを表示したいときには<kbd>C-x C-b</kbd>

---

## チュートリアルで学ぶ

* チュートリアルは<kbd>M-x help-with-tutorial-spec-language</kbd>で呼び出す
* 日本語が用意されている


---

## まとめ

* Emacsは最強のテキストエディタである
* カーソルキーは不要
* Enterキーも不要
* ホームポジションから手を動かさない
* マウスなんてもっての外

---

## おまけ

* <kbd>M-!</kbd>でその場でコマンドを呼び出せる
* <kbd>M-!</kbd> <kbd>open -a Terminal .</kbd>とすれば今開いているファ
  イルがあるディレクトリでターミナルが開く
  * `Terminal`を`Finder`にすれば Finder が開く
* ミニバッファ（一番下の行）にカーソルがあるときには<kbd>M-p</kbd>で履
  歴が呼び出せる


* Vim信者にEmacsを勧めてはならない
  * 宗教戦争が勃発するため