学科の1年生へ,そしてEmacs奮闘中のid:hrkt0115311賛江.
以下のコマンドをお贈りします.
help-for-help
多機能ヘルプです.個人的には
(global-set-key "\M-?" 'help-for-help)
という設定を入れています.設定方法が分からないという方は,「M-x help-for-help」で起動させてください.
しかし「M-x help-for-help」にせよ「M-?」にせよ,これではまだコマンドが完了していません.もう一つ押します.私が一番よく使うのは「k」です.そのあとさらに,Emacsのキーバインドを打ち込むと,コマンド名と意味を教えてくれます.なお,新たなバッファが出てきますが,C-x 0 としなくても,q だけで閉じます.
次に使うのは,「M-? a 関数(コマンド)名の一部 RET」で,正しい関数(コマンド)名とその使い方が出てきます.
詳しくはMeadow/Emacs memoのhelp-for-helpをどうぞ.
query-replaceとquery-replace-regexp
対話的に置換をするコマンドです.カーソル*1から,バッファの終わりまでを対象として,置換候補にカーソルが移り,置換するかどうかを尋ねてきます.
答えはいずれも1ストローク.Enterは打ちません.
- y:そこを置換して,次の置換候補へ飛ぶ
- n:そこを置換せず,次の置換候補へ飛ぶ
- !:そこから終わりまでのすべての箇所を置換する
- C-g*2:そこを置換せず,置換作業を終了する
文字列を文字列に置換するためのコマンドはquery-replaceで,そのためのキーバインドはM-%です.日本語キーボードなら,AltとShiftを押しながら,テンキーでないほうの5です.
例えば行頭の特定の文字列だけ,となると,query-replace-regexpを使います.キーバインドはC-M-%です.Alt,Shift,Ctrlを左手の親指,小指,薬指*3で押しながら,右手の人差し指で,テンキーでないほうの5を押しています.正規表現ですので,「行頭の『\』から始まる…」とかいったのを置換するのは,複雑になりますが,これはこれで自学自習のしがいがあると思います.
Meadow/Emacs memoの基本的な置換機能,正規表現による置換機能もどうぞ.
transpose-chars
(global-set-key "\C-t" 'transpose-chars)
Meadow/Emacs memoには載っておらず,代わりにテキストの入れ換えが見つかりました.C-tは,
- 行の途中にカーソルがあれば,カーソル上の文字と,その一つ前の文字を入れ替え,カーソルが一つ次に進む
- 行の末尾にカーソルがあれば,直前の2文字を入れ替える(カーソルはそのまま)
というものです.bashやzshでも使えます.(Emacs限定ですが)改行も1文字とみなします.
お遊びとして,「mtakehiko」とあるとき,「t」にカーソルと合わせて,このC-tを連打すると,「m」が後ろに移動していきます*4.
楽しいコマンドなのですが,Emacsでも,GNU screenでも,このキーバインドを別のものに設定されがちで,そういうのを見るたび,寂しさを覚えます.
ispell-word
個人的に使用しているMeadowで,M-? k M-$とすると,「M-$ runs the command ispell-word」と出ます.
M-$ とすると,カーソル上の単語をスペルチェックしてくれます.
ispellだったかaspellだったか,スペルチェッカが別途必要です.
ついでに,M-x ispell-buffer は,バッファ全体,M-x ispell-region は,指定した領域を対象として,スペルチェックしてくれます.自分の環境では,日本語や,TeXのコントロールシーケンスを無視してくれるので,論文などのチェックに欠かせません.
undo
アンドゥ,すなわち「さっきの取り消し」のコマンドはいろいろあります.
C-/ runs the command undo which is an interactive compiled Lisp function in `simple.el'. It is bound to C-_, <undo>, C-/, M-DEL, <menu-bar> <edit> <undo>.
自分は長年,C-x u というのを使っていました.C-/ に切り替え中です.
リドゥ,すなわち「さっきの取り消しは取り消し」をしたいとき,redoというコマンドはありませんが,アンドゥ直後にカーソルを動かすだとか C-g とするだとか,とにかく「何も編集をしないコマンド」を実行したあとで,アンドゥのコマンドをすると,リドゥと同じことをしてくれます.
dabbrev-expand
M-/ runs the command dabbrev-expand
「動的略語展開」と言います.Emacsのさまざまなコマンドとともに,この M-/ をコーディングで意識して使えるように,例えば長い関数名や変数名をこのキーバインドで出せるようになれば,初級者は卒業です.
利用例は,「動的略語展開」の結果 - わだいのたけひこのざっきをご覧ください.