C-x C-f でファイルを開いていくとバッファが溜まってくる。バッファリストを表示したときにゴチャゴチャで目的のバッファを探しづらかったりするので、使わないバッファは整理しよう。
まずはバッファリストでの作法を確認
バッファリストでのコマンドは、基本的に1つのキーで操作します。例えばカーソルを移動するときは、[n]を押すと下に移動します。[p]を押すと上に移動。(C-n や C-p でもカーソルの移動はできる)
では、バッファを整理してみよう。
- 使わないバッファにカーソルを移動
- [d] (削除候補マークDが表示されます)
- 複数のバッファを削除するなら、カーソルを合わせて[d]を繰り返す
- [x] (削除完了です)
簡単ですね。
ほかにもバッファリストで使えるコマンドがあります。
- [q] = バッファリストを閉じる
- [k] = [d]
- [u] = マーク(削除候補マークなど)を外す
- [%] = 読み込み専用にする(または読み込み専用を解除する)
- [1] = バッファを1ウィンドウで表示(ウィンドウ分割は解除される)
- [f] = バッファリスト、選択バッファに切り替え
- [return] = [f]
- [o] = 別ウィンドウのバッファを選択バッファに切り替え(カーソルは別ウィンドウに移動)
- [Ctrl]+[0] = [o]と同じ(ただし、カーソルはバッファリストにある)
- [m] = 表示候補マークを付ける([v]コマンドとセットで利用)
- [v] = 表示候補マークの付いた複数バッファ全てをウィンドウに表示する。(元のウィンドウ分割は解除され、表示するバッファ分のウィンドウが均等に作成される)
1度には覚えられないけど、少しずつ慣れていこう!
Webアプリケーションなどをフレームワークを利用して開発している場合、連携するModel,View,Contorollerを分割したウィンドウにそれぞれ表示させてEmacsを利用したりするのではないでしょうか?
この時に、
- Modelを表示するウィンドウは小さめでいいんだけど、、、
- Viewを表示するウィンドウは横幅が大きい方がいいなぁ、、、
などと感じるときがあると思います。そんなときはウィンドウのサイズを変更しましょう。
試してみましょう。
- C-x 3 [return(enter)]
- C-x 2 [return]
- C-x o C-x o
- C-x 2 [return]
と上から順にコマンドを入力するとウィンドウがほぼ均等に4分割されます。
とすると、カーソルがある(上の状態だと右上の)ウィンドウの縦幅が1行長くなります。さらに
とすると、左右分割した右側(上の状態だと右上と右下)のウィンドウの横幅が1桁長くなります。ここら辺は試してみるとすぐ分かるはずです。
まとめると、
- C-x ^ (縦幅を拡げる)
- M-x shrink-window [return] (縦幅を縮める)
- C-x } (横幅を拡げる)
- C-x { (横幅を縮める)
- C-x + (各ウィンドウを均等にする)
です。
最初にウィンドウを分割する順番によって幅の広がり方が少し変わってくるようなので、色々と試しながら自分にあったウィンドウ分割を探してみてください。(今回は左右ウィンドウ分割したあと、左右それぞれのウィンドウを上下に分割しました。上下ウィンドウ分割後に左右ウィンドウ分割した場合、少し動きが変わります。)
以下のコマンドで、リージョンをハイライト表示できるようになります。
M-x transient-mark-mode [return(enter)]
Emacs の初期設定でリージョンをハイライト表示にしたいのであれば、.emacs を開いて以下を挿入しましょう。
(setq-default transient-mark-mode t)
自分が使っている Emacs のバージョンを確認してみる。
M-x version [return(enter)]
ミニバッファにバージョンが表示されるはず。
わたしの環境だと、「GNU Emacs 22.0.97.1 〜」と出ました。
M-x load-file [return(enter)] .emacsファイル[return]
のように、.emacs(~/.emacs)を指定して読み込むと変更した設定内容を確認できる。
.emacs は、環境によって .emacs.el かも。
設定の更新内容を確実に確認するには、Emacsの再起動が必要です。
1行追加して確認、1行編集して確認、・・・、みたいに作業していくのなら、M-x load-file での確認する方が作業を進めやすいでしょうね。
アンドゥ(最後の編集を取り消す)方法
- C-x u
- C-_ ([Ctrl]+[Shift]+[-])
- C-/
上記のコマンドはいづれも同じ動作をするので使いやすいコマンドを使えばいいでしょう。
アンドゥは繰り返し実行できるので、いくつか 前にさかのぼって編集を取り消す場合は C-/ が楽な感じ。最後の編集のみ取り消す場合は、C-x u を使うのもありかな。
「アンドゥの取り消し」のコマンドが見つからないです。
M-x revert-buffer [return(enter)] でセーブした状態に戻せるので、これで対応するしかなのかも。
C-x C-s を頻繁にするクセを付けておこう。
リージョンは、マークした位置からポイントまでの位置の範囲のこと。
マーク? ポイント?
- マーク : C-Space (コントロール押しながら[Space]キー)でセットされる位置
- ポイント : カーソルの直前の文字の位置
試してみよう。まず適当に文字を複数行いれてみる。例えば、abc[return] xyz[return]など。
- a にカーソルを置いて C-Space するとミニバッファに Mark set と表示される。
- z にカーソルを移動する。すると、y の位置がポイントになる。
- コマンド C-x C-x してみよう。マークとポイントの位置が入れ替わります。(マークとポイントの位置が分からなくなったときの確認にも使えるコマンド)
- マークからポイントまでの範囲のことをリージョンっていう。
上手く説明できないな、、、
とりあえず上の状態で、C-w でカット&ペーストのカットになる。(正確には C-w でテキストをキルすると言った方がよいかな。)
M-w でコピーです。カットやコピーしたテキストは、C-yでヤンク(ペースト)できます。
別のコマンドでは、段落をリージョンの指定したりバッファ全体をリージョンに指定したりもできるみたい。 M-h とか C-x C-p で。
キルした内容を C-y で呼び出すこと。
C-y のあとで M-y を繰り返すことで、キルリングに保存されてるテキストを順繰りに出力される。
カット(コピー)&ペーストでいうところのペーストのことだと考えてよい思う。
使用例は以下を参照してね。
基本編 Emacsキルリング?
C-k や C-w などで削除したテキスト、M-x でコピーしたテキストが保存される領域。
確認してみる。
- Emacsを起動する
- aaa[return] bbb[return] ccc[return] のように適当にテキストを入力
- aaaの先頭にカーソルを移動して、C-k
- bbbの先頭にカーソルを移動して、C-k
- cccの先頭にカーソルを移動して、C-k
- C-y (aaaが表示される)
- M-y (bbbが表示される)
- このあと M-y を繰り返し実行すると(ccc→aaa→bbb→ccc)と切り替わる
これがキルリング。キルしたテキストを(リングのように?)くるくるさせて使い回せ!削除やコピーされたテキストを30件保存できるように初期設定されているらしいよ。
バッファごとに指定できる編集作業を楽にする機能(モード)のこと。
開いたファイルの種類などにより自動でバッファに設定される機能(モード)がメジャーモード。
メジャーモードに関係なく好きなときにオン/オフできる機能(モード)がマイナーモード。
マイナーモードの1つである単語略称モードを試してみましょう。まずEmacsを起動しよう。
- C-x v hogehoge.txt(適当なファイルを開くか作成する)
- M-x abbrev-mode [return(enter)]
- テキストを入力(たとえば eyes)
- C-x a i g eyesrobe [return(enter)]
- 入力したテキスト eyes がコマンドで入力した eyesrobe に変わる
- もう一度 eyes と入力して [Space]キーを押すと
- eyes が eyesrobe に変換されるのが分かると思います
これは便利ですねぇ。
他にもマイナーモードの種類があるので色々試してみたくなりますね。
補足:上で試した単語略称モードで単語を登録すると、登録した単語はバッファに書き込まれます。Emacsを終了するときに .abbrev_defs という名前でファイルを作成するか聞かれますので、保存するなら y で保存しましょう。