- Emacsは最初に一つだけ
- フォントの変更方法
- 大移動
- 文字削除
- C-l C-l C-l ...
- Alt+Tab
- 「emacs ファイル名 &」で開いたら
- バッファはどこへ消えた?
- コピペあれこれ
- 検索に番兵
はじめに
今年度,一新された学内Vine LinuxとEmacsですが,何回かプログラミング演習に立ち会い,学生も自分も,使いこなせていないなあと感じました.
教員として,ちょっと注意しないといけないなと思ったのは,Emacsのバージョンが23になり,それまでの知識が使えないところがある点です.具体例を一つ挙げると,Shiftを押しながらクリック,すなわち
それでも多くのコマンドやキーバインドは,これまでのものと変わりません.「これだけ知って使いこなせたら,コーディングが快適になるよ」というのを,一つ一つ動作確認した上で,選んでみました.
この色は直ちに覚えて損のないコマンドや機能,この色は使いこなせば学科の中で上位にいられる*1ようなコマンドや機能です.
なお,動作確認には自宅のVMware Player + Vine Linux + Emacs23を使用しています.このEmacsで,特別な設定をせずに使える機能の紹介をしています.~/.emacsほかに書いておくと便利な設定などについては,また別の機会にしたいと思います.
1. Emacsは最初に一つだけ
ファイル編集のたびにEmacsを起動するのは,Emacs初心者の証しです.そんな証しはさっさと捨てましょう.
ログイン直後に“1枚”起動し,ログアウトの前に終了するようにしたいものです.
複数のファイルを編集したいというときは,C-x 5 2とすれば,ウィンドウ(Emacsではフレームといいます)が複製されます.消したければ,C-x 5 0です.
一つのファイルに,カーソルを2箇所置きたいというときは,C-x 2とします.別々に,カーソルを移動できます*2.一つのファイルの複数の箇所を参照するほか,注意深くカット&ペーストしたいときにも,便利です.
ときには,C-x 3として,縦方向に分割線を入れ,ファイルを横並びで表示させるのが,役に立つかもしれません.
2. フォントの変更方法
フォントを変更したければ,Emacsのメニューで,「オプション>標準のフォントを設定...」を選んでください.
私が演習時間中に表示させていたのは,VM ゴシックの16ポイントです.
3. 大移動
見たい行を大きく移動したいとき,マウスのホイールでもできますが,伝統的なEmacsでの方法も知っておくと,マウスに手を伸ばさなくていいので,作業が効率的になります.
C-vで1画面分下に,M-vで1画面分上に移動します.
M-<(日本語キーボードだと,AltとShiftを押しながら「,」)で,バッファの先頭に,M->(同じく,AltとShiftを押しながら「.」)で,バッファの末尾に移動します.
特定の行番号に移動したければ,まずM-g M-gとします.昔はM-gは1回だけだったんですけどね.それはさておき,「Goto line:」と尋ねてくるので,行番号を打ち込んで*3,Enterキーを押します.
4. 文字削除
文字削除の方法をいくつか,知っておきましょう.
カーソルの直前の文字削除はBS (backspace),カーソル位置の文字削除はDel (delete),ってのは当たり前じゃないかと思うかもしれませんが,EmacsではC-dも,Delと同じくカーソル位置の文字削除になります.
カーソルの直前の単語削除というのもできて,M-backspaceです.find-fileでファイルを開こうとして,親ディレクトリに移りたいときに便利です.
5. C-l C-l C-l ...
Ctrlを押しながら,Lのキーを何度も押すと,C-lというコマンドの規則性,そして有用性が見えてきます.
6. Alt+Tab
学科の演習授業としては,Emacsひとつで編集もコンパイルも実行も何でもしてしまうのではなく,編集はEmacs,コンパイル・実行は端末と,分けているようです.私もこのやり方に賛成です.Emacs上でシェルを使いこなすのは,茨の道だからです.
それで,Linux *4の中で,ウィンドウをアクティブにしたいとき,マウス操作は不要です.
具体的には,Emacs表記ではM-TAB,一般的な表記だとAlt+Tabで,アクティブなウィンドウが変わります.
Altを押しながら,Tabを何度も押して,使用したいウィンドウになったら,Altも離す,というのもできます.
欲張って,あともう一つ覚えましょう.Shift+Alt+Tabで,アクティブなウィンドウの移動方向が逆になります.Altを押しながら,Tabを押しすぎた,一つ前に戻りたいというときにも,使えます.
なお,Alt+TabやShift+Alt+TabはWindowsでも使えるのですよ.
ということでこの項目,実はEmacsのコマンド解説ではありませんでした….
7. 「emacs ファイル名 &」で開いたら
Emacsに戻ります.起動方法として,有名なものがいくつかあります.
- Linuxのメニューから選ぶ.「アプリケーション>アクセサリ>Emacs23 エディタ」の順に選択すれば,起動します.
- 端末上で,「emacs ファイル名 &」を実行する.
- 端末上で,「emacs -nw ファイル名」を実行する*5.
「emacs ファイル名 &」で起動したとき,こんなふうに,フレームの下半分に何やらメッセージが出ます(記憶する限り,Emacs23になって出てきた現象です).
そのまま上半分だけで編集するのでも,境界線(上半分のバッファ用のステータス行)をマウスで下方向にドラッグして,表示領域を広げるのでも,悪いとは言いませんが,明らかに下半分のバッファは見てても意味がありませんので,消しましょう.
コマンドは,C-x 1です.はい消えた!
8. バッファはどこへ消えた?
C-x 1としたり,新たにファイルを開いたりして,見えなくなったバッファも,Emacsを終了しない限り,ちゃんとキープしています.
そういうのを再表示させたいというときは,「C-x C-b」と「C-x b」の2種類の方法があります.一長一短です*6.
C-x C-bとすると,管理しているバッファの一覧が表示されます.C-x oで移動して,上下の矢印で表示させたいバッファの行に移動させてから,Enterを押せば,再表示できます.Enterのかわりにfでも同じです.oを押せば効果が変わります*7.
ただし,C-x C-bは,フレームに一つしかバッファを表示していなくても,二つになってしまうとか,複数表示していたら一つが消えるとかいったデメリットがあります.
C-x bとすると,ミニバッファで「Switch to buffer (default …):」と尋ねられます.Tabを押せば,候補が出るので,ある程度打ち込んで,Tabで補完し,Enterを押しましょう.
C-x bには,C-x C-bにないメリットがもう一つあります.C-x bのあとすぐにEnterを押すと,直前に表示させていたバッファが表示されます.
9. コピペあれこれ
コピー・カット・ペースト,すなわち切り貼り*8に関する操作を,表にしてみます.
説明 | Windows | Emacs | その他 |
---|---|---|---|
カット | Ctrl+X | C-w | |
コピー | Ctrl+C | M-w | Ctrl+Ins |
ペースト | Ctrl+V | C-y | Shift+Ins |
全体指定 | Ctrl+A | C-x h | |
単語指定 | ダブルクリック | M-@ |
EmacsのM-@は,カーソル位置の文字から,単語の終わりまでを選択します*9.続けてM-@とすると,次の単語の終わりまでを領域指定します.何回でもできます*10.また,C-x C-xとしてから,M-@で,領域指定の方向が逆向きになります.
GUIで動かすEmacsでも,マウスのダブルクリックは使えます.
Emacsのペーストについては,もう一段,面白い機能があります.C-yとした直後にM-yとすると,前の前にコピーしたものが貼り付けられます.さらにM-yで,前の前の前のになります.
10. 検索に番兵
特定の文字列が,バッファのどこにあるか,検索したければ,インクリメンタルサーチです.カタカナにすると長いですが,キーバインドとしては,C-sです.逆向きには,C-rです.
文字列が見つかって,ここに表示位置を切り替えたいというとき,個人的には左右の矢印を1回ずつ押しています.検索中にC-gとし,検索前のカーソルに戻るというのも,よく使います.
ある文字列を検索したい,だけどバッファの中にたくさんあって,希望する箇所を見つかったら,周辺を見たりちょこっと編集したりして,また戻りたい,というときには,現在の行に,その検索語を書いてから,検索すると,戻るのが容易です.
そういう用途で置く情報を,番兵とか門番とか,英語ではsentinelとか言います.厳密に言うと,ちょっと使い方が違うんですけどね.
タイトル変更
同月13日未明に,「Vine5 + Emacs23のおすすめコマンドとか,10個」から今のタイトルに変更しました.
*1:ただし,Emacsの使い方に限った話であって,プログラミング能力とは一応別です.傾向としては,こういう機能をよく知っている学生ほど,プログラミングもできるというのがある---相関関係はおおむねあるけど因果関係にはならない---のですけどね.
*2:(Emacsの意味での)ウィンドウの移動には,C-x oが便利なのですが,まずはマウスでいいでしょう.
*3:行番号移動を取りやめたかったら,C-gで中断します.
*4:正確にはX Window System…でもないや.何だっけ?
*5:リモートログインして,GUIが使えないけどEmacsを使いたいというときに使うといいでしょう.授業向け,万人向けではありませんね….
*6:私自身は,大学でEmacs(Muleと言っていましたが)を使い始めたころから,C-x C-bばかりでした.C-x bになじむようになったのは,ごく最近です.
*7:一度は,やっておく価値があるでしょう.ここでのfやoは,diredでも使えます.diredというのは,C-x C-f ~ RETでそんなモードに巡り会えます.楽しいけど,学科学生に強制はしません.
*9:Emacsが結構賢く認識してくれます.日本語文字が入っていても,かまいません.
*10:C-lやAlt+Tabと一緒で,Altキーを押し続けたまま,@を何度も押すことになります.