emacs入門

emacsのチュートリアルをまとめました。

本ページを読めば、テキストエディタとしての操作ができるようになります。


1 emacsとは

emacsのテキストエディタとしてのメリットは以下の通りです。

  • Windows/Unix/Linux向けにバイナリが提供されている
  • マウス操作不要でキーボードから手を離す必要がない
  • SSH経由で使用可能
  • 統合開発環境として使うことができる

テキストエディタと記載しましたが、ウェブウラウザとしても動作しますし、メールクライアントとしても動作します。

例えばウェブからサンプルコードを持ってきて実行させるのも、キーボードから手を離す必要がなくなります。

 

以下はemacs上でgoogleを開いた画面です。

0001_w3m.png

1週間も使っていれば基本的な操作は身につきます。

C/C++のコーディングでもっと便利に使えないかと思った時に、C/C++のコーディング向けの設定を組み込んでいけば良いです。

一気に設定を組み込む必要はありません。少しずつ便利にしていきましょう。

1.1 emacsとviどちらを使えば良いか

どっちでも良いです。しかし、基本操作は両方覚えておくべきです。

敢えて言うなら、emacsはMetaキーがデスクトップ環境のキーバインディングとバッティングしないようにケアする必要があります。

1.2 Windows上で使うべきか

Windows向けのバイナリは提供されていますが、無理に使う必要はないです。

秀丸エディタ、サクラエディタ、Sublime text等を使えば良いです。

2015年9月現在だとSublime textが一番活発なのではないでしょうか。

 

しかし、Wineに乗せてWindowsアプリケーションのエディタを動かすくらいならemacsやviを使ったほうが簡単です。

ひとつの開発環境や開発言語に縛られる言い訳を探すのは止めましょう。

2 特殊キー

アルファベットや数字等の通常キーはタイピング用の用いられます。

カーソル移動等の特殊操作は特殊キーと通常キーを同時押しして実行します。

 

特殊キー プレフィックス キーバインド
Ctrlキー C Ctrlキー同時押し
Metaキー M Escキー先押し、あるいはAltキー同時押し

 

特殊キーを交えたキーバインディングは[プレフィックス]-[キー名]で表現されます。

例えば、C-aキーはCtrlキーを押しながらaキーを押すことを表します。

 

Windows環境でMetaキーのAltキー同時押しを利用するには設定が必要な点に注意してください。

emacsのWindows向けバイナリの場合は.emacsでAltキーをmetaキーとして扱わなくする設定をコメントアウトする必要があります。

teratermでリモートマシンのemacsを利用している場合、teratermのAltキーをMetaキーとして扱うように設定する必要があります。

 

この他にもSuperキー、Hyperキー、Altキーがありますがあまり使いません。使う場合は.emacsでキーを割り当てる必要があります。

3 カーソル、バッファ、リージョン

SSH経由で実行した画面です。

0002_Edit.png

 

カーソル 現在位置
バッファ 作業領域
リージョン バッファの中で選択した領域

 

emacsでは複数のファイルを同時に開くことができ、それぞれにバッファが割り当てられます。

バッファを編集してセーブすることでファイルに反映されます。

emacsを起動すると、emacsのログが出力される*Message*バッファとelispを実行できる*Scratch*バッファも起動します。

 

選択可能な領域のことをリージョンと言います。

4 ショートカット

テキスト編集に関わる操作のショートカットを記載します。

4.1 カーソル移動

カーソル移動のショートカットは以下の通りです。

 

C-fキー カーソルを右に移動
C-bキー カーソルを左に移動
C-pキー カーソルを上に移動
C-nキー カーソルを下に移動
C-eキー カーソルを行末に移動
C-aキー カーソルを行頭に移動

 

4.2 バッファのスクロール

バッファをスクロールするショートカットは以下の通りです。

カーソル移動のみでは移動が遅いので併用しましょう。

 

C-vキー バッファを下にスクロールする
M-vキー バッファを上にスクロールする
M-<キー バッファ先頭にスクロールする
M->キー バッファ末尾にスクロールする

 

M-x goto-lineを用いることで指定の行までジャンプできます。

 

4.3 削除

削除のショートカットは以下の通りです。

 

C-dキー カーソル位置の文字を削除する
Backspaceキー カーソル位置の前の文字を削除する
C-kキー カーソル位置以降の行末までの文字列を削除し、
  ペースト用のキューに追加する

 

4.4 ファイルのセーブ、emacsの終了

ファイルのセーブと終了のショートカットは以下の通りです。

 

C-xキー C-sキー ファイルをセーブ
C-xキー C-cキー emacsを終了する

 

4.5 Undo

emacsのデフォルトではUndoのみをサポートします。

emacsのRedoはUndoした内容をUndoした操作になります。

Undo実行後にセーブを実行すると、Undoの内容をUndoできるようになります。

 

C-_キー Undoを実行する

 

明示的にRedoする場合はRedo Mode等を導入する必要があります。

4.6 キャンセル

何か操作を失敗した場合はC-gキーを押しましょう。

 

C-gキー キャンセル

 

4.7 リージョンの選択

リージョンの選択はC-spaceで実行します。

 

C-spaceキー リージョンを選択する
C-gキー 選択を解除する

 

Ctrlキーとspaceの同時押しが半角/全角の切り替えとバッティングしている環境では、Ctrlキーとshiftキーとspaceキーの同時押しでリージョンの選択が可能になります。

4.8 コピーアンドペースト

コピーアンドペーストのショートカットは以下の通りです。

 

C-wキー リージョンの範囲を削除して、ペースト用のキューに追加する
M-wキー リージョンの範囲をペースト用のキューに追加する
C-yキー キューからペーストする

 

4.9 文字列検索、置換

文字列検索、置換のショートカットは以下の通りです。

 

C-sキー 文字列を前方検索する
C-rキー 文字列を後方検索する
M-%キー 置換するかしないかを決めながら文字列を置換する

 

M-x replace-stringを用いることで置換するかどうかの問い合わせなしで一括置換ができます。

4.10 ファイルを開く、切り替え

ファイル操作のショートカットは以下の通りです。

 

C-xキー C-fキー ファイルを開く
C-xキー dキー ディレクトリを開く
C-xキー C-bキー バッファを切り替える

 

特にC-xキー dキーでディレクトリを開くとdired-modeというバッファが開きます。

0003_dired.png

 

RETキー ファイルを開く、ディレクトリを移動する
Rキー リネームする
Dキー ファイルを削除する
Mキー chmodを実行する
Oキー chownを実行する

 

C-xキー C-bキーを押した場合、バッファの一覧が表示されます。

0004_buffer-list.png

 

RETキー バッファを開く
Dキー 削除用にマーク
xキー マークを実行
uキー アンマーク

 

4.11 ウィンドウの分割と統合

ウィンドウ分割のショートカットは以下の通りです。

 

C-x 1キー ウィンドウを一つにまとめる
C-x 2キー ウィンドウを上下で分割する
C-x 3キー ウィンドウを左右で分割する
C-x oキー 次のウィンドウに移動する

 

C−x 2キーやC-x 3キーでウィンドウ分割した後、C-x oキーでウィンドウ間を移動することができます。

5 elisp

emacsはEmacs Lispと呼ばれるLisp言語の拡張言語のインタプリタを実装しています。

略してelispと呼ばれます。

今まで記載したショートカットは、それに対応したelispの関数が呼ばれているにすぎません。

例えば、M-%キーはquery-replaceという関数が呼ばれています。

 

elispの変数を変更したり、elispで実装されたemacsパッケージを外から持ってきたりすることで、emacsの機能を拡張することができます。

 

M-xキーを押すことでelispの関数を呼ぶことができます。

5.1 *Scratch*バッファ

elispのインタプリタです。elispの変数を確認したりするのに用いることができます。

現在のtab幅を示すtab-widthという変数を評価すると8となりました。

0005_elisp.png

5.2 ${HOME}/.emacs

emacs起動時に読み込まれるファイルです。elispの文法で記述します。

このファイルでtab-widthの初期値を変更したり、追加したパッケージをロードさせるようにします。