許可を得て掲載しています。草稿なので細かい部分は実際の記事とは異なることがあります。さぁ、Emacsを使ってみよう前回はEmacsとは何なのかということを説明してきました。よりコントロールされている「世界」です。Lispを書けば、テキストエディタとしての挙動をカスタマイズできるのはもちろんのこと、Emacs上で動くアプリケーションをも作れます。Lispで書かれています。連携するのがとても得意で、シェルを動かしたり、コンパイルエラー行やgrep検索結果にジャンプすることもお手のものです。テキストエディタなのでプログラミングや文書作成にEmacsを使うことはもちろんできます。なにより嬉しいのが、Emacsアプリケーションと日常のプログラミングで操作を統一できることです。Emacsアプリケーションは多岐にわたりますが、ほぼどれもが文字入力を伴います。メーラでメールを書いたり、IMのメッセージを書いたり、ブラウザのフォームに入力することなど、ありとあらゆる文字入力をEmacsでまかなえます。目的を達成するEmacsアプリケーションがあれば、他のソフトを使わずにEmacsでやってしまう方法があります。そのEmacsアプリケーションの使い勝手はともかく、文字入力をする場面においてはいつものEmacsの操作で行えます。この安心感はとてつもなく大きいものです。Webメールではブラウザで用意されたインターフェースでメールを書くことができます。Lispで書かれたメーラを使えば、Emacsから出ることなくメールが書けます。メールの内容を入力するときも、高度なコマンドがたくさん使えるEmacsならばストレスフリーです。見慣れた背景色やフォントなので目にも優しいです。それこそが筆者がEmacsを溺愛している理由なのです。それでは、文字入力一元化のメリットを亨受するために、テキストエディタEmacsの基本的な概念を見ていきましょう。Lispを書けば操作方法は好き勝手に変更できます。根底にはEmacs流のやりかたというのがあり、それを無闇に変更するとひずみが出てきかねません。Emacs入門者は基本的な操作方法をきっちり学んでおきましょう。カスタマイズするのは基本ができてからで遅くありません。Emacsでの効果的な編集方法を学んでおくことは投資効果が大きいです。筆者は20年近くEmacsを使っていますが、最初の頃に覚えた操作方法は今でも使っています。数ヶ月や数年使っていれば無意識に手が動くレベルになってきます。Emacsのスキルというのは一度覚えれば長年使い続けることができます。数年で時代遅れになってしまうほど移り変わりの激しいIT業界において、長年使い続けられるテキストエディタの基礎スキルというのは異色を放っています。さあ、始めましょうEmacsはシェルから「emacs」と引数をつけずに実行すれば立ち上がります。C-c)を押してください。本連載では入門者や初級者でもEmacsの魅力に触れていただけることをコンセプトとしています。そのため、しばらく中級者以上には釈迦に説法になりますがご容赦ください。キー操作の表記法Emacsの世界では、キー操作を記述する独特の記法が存在します。EmacsではCtrlやAltを多用するため、なるべく簡潔な記法が求められてきたからです。テキストエディタとしての最も基本的なコマンドはファイルを開くことですが、Ctrl+Xの後にCtrl+Fを押します。「C-」というのはCtrlを押しながらを意味するEmacs記法です。画面を逆スクロールするのは、Alt+vを押します。これもEmacs記法で「M-v」と書きます。「A-」ではなくて「M-」となっているのは歴史的理由です。キーボードにはメタキーというのが存在していて、現在ではAltキーに相当します。Emacsでメタキーと言えばAltキーのことです。CtrlとAltを同時に押すのは「C-M-」あるいは「M-C-」と書きます。Ctrl+Alt+xは「C-M-x」となります。Emacs関連の文書で使われているだけでなく、Emacs記法を解釈するLisp関数が存在します。Lisp内でEmacs記法を使ってキー割り当てを記述することもできます。ファイル・バッファ・ミニバッファEmacsを使うということはバッファを編集することに他なりません。テキストを入れる器のことです。ファイルを編集するということは、ファイル名に関連付けられたバッファを編集することに他なりません。このように、Emacsではファイルとバッファを切り離しているので、ファイル編集以外のことができます。ファイルと関連付けられていないバッファには、シェルコマンドの実行結果やヘルプを表示したり、メモやブラウザのフォーム入力などがあります。ファイルを開くと、それに対応するバッファが作られます。複数のファイルを同時に開いて編集できますが、一度ファイルを開いてしまえば、バッファ名の先頭数文字を指定するだけで切り替えられます。開かれているファイルを再び開こうとすれば、対応するバッファに切り替わります。」という特別なバッファがあります。それは、Emacsがユーザに情報を尋ねるときに、プロンプトとともに画面下部に出てくる領域です。GUIだとダイアログボックスが使われるところですが、Emacsはシンプルです。C-fでファイルを開くとき、ミニバッファでファイル名を聞いてきます。bでバッファを切り替えるとき、ミニバッファでバッファ名を聞いてきます。M-xの後はコマンド名を聞いてきます。ファイル名やバッファ名を聞かれたとき、フルネームを入力する必要はありません。最初の数文字を入力した後にTABを押せば足りない文字列を補ってくれます。補完候補が複数個ある場合は補完候補を教えてくれます。コマンドの覚え方Emacsには無数のコマンドが存在します。長年にわたってEmacsを使っている筆者でさえも、知らないコマンドはたくさんあります。詰め込み教育に慣らされた日本人は、まず使い方をたくさん勉強してから使うような傾向があると思います。Emacsはたしかに複雑で多機能ですが、そこまで肩肘張ってやる必要はありません。コマンドがたくさんあるかを理解すれば、必要なコマンドが自然と身に付いていきます。逆説的な言い方ですが、ただ単にEmacsを使いたければコマンドなど覚える必要はありません。ファイルはツールバーやメニューから開けますし、カーソル移動はマウスや矢印キーも使えます。コピー&ペーストなどの基本的な編集操作もマウスから行えます。このようにごくごく普通のテキストエディタとしてEmacsは使えます。最初の取っ掛かりとしては、マウスや矢印キーでもよいです。本記事を読んでEmacsに入門しようとしているあなたはそれで満足ですか?ホームポジションから手を離して、マウスに手をやって、再び手をキーボードに戻すことにあなたは耐えられますか?面倒だと思うはずです。面倒なことはなるべく避けてより効率的に操作したくなるものです。GUIでもマウスでコピー&ペーストするのは面倒なのでショートカットキーがありますよね。そこで基本的なコマンドを覚えれば、Emacsはもっと使いやすくなります。面倒なことを回避するという明確な目的意識さえあれば、それで十分です。カーソル移動も1文字ごとに動かす(C-b、C-f)以外に、行単位(C-p、C-n)・単語単位(M-b、M-f)で動かしたり、行頭・行末(C-a、C-e)、バッファ先頭・バッファ末尾(M-<、M->)に移動できます。それらのコマンドがあるのでしょうか?1文字ごとに動かしていては、遅すぎるからです。目的地にスパッとカーソルを移動させたいからこそたくさんのコマンドが存在するのです。このように多くのコマンドを知れば知るほどEmacsは使いやすくなってきます。コマンドを覚えなくても一応使えますが、覚えるに越したことはありません。コマンドを使っていれば無意識に手が動くようになります。慣れるまでは不自由ですが、1年使えば、Emacsが手足の一部になった感覚になることでしょう。覚えることが少ないことと、使いやすいということはまったく別です。覚えることが少ないと確かに簡単に使えるものの、しばらくしたら操作が面倒になってきます。使える操作が少なすぎるのは不便です。便利に使うためにコマンドを覚えるのです。多くのコマンドを知れば知るほどEmacsは使いやすくなりますが、普段使わないコマンドを無理矢理詰め込んで覚えるのもよくありません。使わないものはあっさり忘却曲線の彼方へ飛んでいってしまいます。ある操作をしたときに不便だと思ったその時こそ、よりよい方法・コマンドを覚えるチャンスです。禁断の果実cua-mode現在のGUI環境でのショートカットキーはだいたい統一されています。C-cでコピー、C-xでカットみたいな感じになっていますね。そのため、使い慣れているいつものショートカットキーをEmacsで使いたいという欲求も出てきます。いうのは、GUIでの操作を決めている規格であり、その規格に従うことでアプリケーションごとに操作方法を覚える必要をなくすものです。おかげさまでWindowsでもMacでもUnixでも同じ操作が使えます。CUAが制定される以前は操作体系が乱立していました。Emacsの歴史はCUAより古いので現代人から見て変則的なキーバインドになっています。cua-modeを実行すると、Emacs本来の操作体系に加え、CUAの操作体系が使えるようになります。pasteさらに、Shiftを押しながら矢印キーを押せばその部分を範囲選択できますし、範囲選択時に文字キーを打てば、その部分が置き換わります。Emacsがよりいっそう「普通の」エディタとしてふるまうようになります。残念なことにEmacsとCUAは本質的に相容れない操作体系です。C-vは本来次ページにスクロールをするコマンドで、Emacsチュートリアルで最初に出てくるほど超初歩的なものですが、cua-modeではペーストに変更されてしまいます。EmacsにおいてC-xとC-cは2ストローク以上のコマンドのためにすでに使われています。そこで、cua-modeでは強引な方法でEmacsとCUAの操作体系を共存させています。C-cと打つ2のケースに該当するコマンドはさほど多くないので、cua-modeはなんとか使いものになるでしょう。「郷に入っては郷に従え」という言葉があります。Emacsを選んだ以上、Emacs本来の方法から学ぶべきです。EmacsにはCUAのショートカットキーをはるかに超えるコマンドがあり、高度な編集作業も楽々こなす力があります。あらゆる入力作業をEmacsで行うようになれば、CUAに執着する必要はなくなります。cua-mode自体が多機能で便利な機能もありますが、Emacsの挙動を大幅に変更してしまいます。よって、初心者救済的な位置付けと思ってください。実践形式のテキストになっているので、これを一通りやればEmacsの操作体系の概要が身に付きます。tを押せば始められます。基本的なコマンドを効率的に学ぶには、チュートリアルをやりながら御自身でチートシートを作ることをおすすめします。コマンドは実際に手を動かして学ぶのが一番です。そのため、あえてコマンド一覧を本稿に載せませんでした。Emacsについて学びたいのであれば、筆者のEmacs専門メルマガに登録してみませんか?無制限メール相談権付きであなたを徹底サポート致します。Emacsing!本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。2014年5月号掲載記事)」コメントをどうぞ返信をキャンセルする。本サイトの内容を手元で検索できるよう文書全体をGitHubに置いています。辞書代わりにしていただければ幸いです。送信するか、コメントしてください。Lispテクニックバイブル(1)るびきち流Emacs超入門(23)本サイトについてほぼ毎日Emacsについて何か書いています。パッケージの紹介ではインストール・設定からスクリーンショットも載せますので、パッケージの概要がわかります。本サイトは、広大なるEmacs界の道具としてあなたの役に立ちたいという純粋な奉仕で運営しています。掲載しているコードは複写・転載など自由に使っていただいて構いません。改良・MELPAパッケージ化していただけると最高に嬉しいです。GNU/Linuxで動作確認しています。XPも使っていました。送信するか、コメントしてください。きち塾5周年まぐまぐ殿堂入りメルマガ+無制限メール相談+elisp/文書添削をやっています。Emacsユーザ用100%目標達成スキル何事にも屈しない鉄壁のマインド理想の自分になる方法など豪華特典満載!ぜひ入塾してEmacs力だけでなくてQOLも上げていきましょう。2014でhelm-swoopについて書きました。Mon]Emacs24.4リリース!サイト全文をGitHubにて公開!手元で全文検索可能にするために、本サイトの文書全体をGitHubに置いています。