emacsのチュートリアルをまとめました。
本ページを読めば、テキストエディタとしての操作ができるようになります。
Table of Contents
1 emacsとは
emacsのテキストエディタとしてのメリットは以下の通りです。
- Windows/Unix/Linux向けにバイナリが提供されている
- マウス操作不要でキーボードから手を離す必要がない
- SSH経由で使用可能
- 統合開発環境として使うことができる
テキストエディタと記載しましたが、ウェブウラウザとしても動作しますし、メールクライアントとしても動作します。
例えばウェブからサンプルコードを持ってきて実行させるのも、キーボードから手を離す必要がなくなります。
以下はemacs上でgoogleを開いた画面です。
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経由で実行した画面です。
カーソル | 現在位置 |
バッファ | 作業領域 |
リージョン | バッファの中で選択した領域 |
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というバッファが開きます。
RETキー | ファイルを開く、ディレクトリを移動する |
Rキー | リネームする |
Dキー | ファイルを削除する |
Mキー | chmodを実行する |
Oキー | chownを実行する |
C-xキー C-bキーを押した場合、バッファの一覧が表示されます。
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となりました。
5.2 ${HOME}/.emacs
emacs起動時に読み込まれるファイルです。elispの文法で記述します。
このファイルでtab-widthの初期値を変更したり、追加したパッケージをロードさせるようにします。