from 和ジオ

ものぐさ emacs 入門 (スクリーンショットもあるよ)

ソフトを使う

ものぐさ emacs 入門 (スクリーンショットもあるよ)

なんとなくはさわったことのあった emacs ですが、 Linux上のメール環境にしたため 結構な時間さわるようになってきました。そんなわけで、

$ vi .emacs

なんて、わけの分からないコマンドも打つことも減ってきていい感じです。。

vi にしろ emacs にしろ、何にも知らないと何にもできないソフト であることは確かなので、初めてさわる人用に、ものぐさ仕様で メモを書いてみます。

ここではターミナルからの接続を前提としています。 XEmacs はマウス とかも使えるのだと思うのですが、とりあえずおいておきます。 使っている、emacs は 21.3 です。(バージョン 21! に歴史を感じます)

このメモのミカタですが、 CTRLキーは [CTRL] と、M(Meta) キーは [ESC] と書きます。 Meta が Alt に割当たっている場合は 適当に読み替えてください。また、通常キーは、大文字小文字を 区別するので注意してください。 大文字にすると「強力」に なることが多いようです。

emacs 自体に分かりやすいチュートリアルがついているので、ここでは 今まで使った短い時間で感じた、勘所みたいなのを書きたいと思います。

最初に覚えること

たいていのマニュアルは、起動と終了から始まりますがここでは コマンドの中止から書きます。 まずこれを覚えれば、誤操作しても安心。 特に emacs で多用する 2ストロークのコマンドは打ち損じが多いので、なんか変だなと 思ったらこのキーを連射します。

CTRL + g

CTRL を押しながら、「g」です。 これでどんなコマンドでも、コマンド途中でも中止をかけることができます。

さぁ、これで準備OKです。vi と違って、文字の入力とカーソルの 移動は普通にできます。

後は、何をやりたいかにかかってきますが なんってもここからは、コマンド分からんとなんにもできないのが痛いところ。 もちろん、マニュアル見れば分かりますが、画面切り替えるのは 思考が止まって結構おっくうです。ここで使うのが、次のコマンド。

ESC + `

ESC を一度「押してから」、SHIFT を押しながら「@」です。

メニューをだした図

うまく上がでなかったら、上の「CTRL + g」です。連射連射・・・。そして再挑戦。

画面の下にメニュー階層が表示されます。自分のやりたいことを 階層からたどっていけば実行できます。メニューの横にショートカット コマンドが記載されているので、これで覚えていきましょう。 忘れても大丈夫。またメニュー出せばいいというものです。 ようやく最上位行にある、メニューの意味が分かりましたね。

カットとコピーとペーストと

次にしたくなるのが、カットアンドペーストですね。賢明なる方なら 上の階層メニューの「edit」にあることに気づかれたかと思います。 ・・・が、範囲の指定の仕方が謎です。。Windows なら SHIFT を押しながらカーソルで範囲指定、、ってなもんですが、

emacs では範囲の先頭(後方でも良い)にカーソルを持って行き、

CTRL + SPACE

です。これで、mark と呼ばれる範囲の先頭がセットされました。 あとは、範囲の終わりにカーソルを持って行き、メニューにある コマンドを実行すれば OKです。ここでは、そのショートカットを 記載しておきましょう。

CTRL + SPACE 範囲の先頭をセット
CTRL + w 範囲の先頭からカーソル位置までをカット
ESC + w 範囲の先頭からカーソル位置までをコピー
CTRL + y 貼り付け

あとおまけで、

CTRL + k

というのがあって、カーソル位置からその行の改行までを切り取りしてくれます。 コピー版もあればよいのですが、これは、

CTRL + k CTRL + y

で代用可能です。切り取ってすぐ貼り付けて元に戻せばいいわけです。

カーソルの移動

たぶん、カーソルの移動はカーソルキーをつかって移動できている と思うのですが、CTRL キーを使った、カーソル移動ショートカット があります。 emacs の拡張を行う elisp で書かれたソフトでは カーソルと CTRLカーソルに違う機能が割り当たっていることも あるので、覚えておくと便利です。

また、カーソルジャンプ系のコマンドも書いておきます。

CTRL + p 前の行に
CTRL + n 次の行へ
CTRL + f 次の文字へ
CTRL + b 前の文字へ
CTRL + a 行の先頭へ
CTRL + e 行の最後へ
ESC + 文書の最初へ
ECS + > 文書の最後へ

それぞれ、英語の頭文字になっているのだと思うので これで覚えましょう。その他にもいろいろありますが 必要に応じて追加していくとイイと思います。

バッファ

メニュー階層からいろいろいじっていくと、画面が分割された ような画面になり、独立した、GUI的に言えばペインのような 構成になることがあります。この1つ1つを、emacs の世界ではバッファ と呼ぶらしいです。いままでの操作もバッファへの操作という ことになります。

3ペインの図

これは、画面を分割し、バッファを縦と横、3つに表示した様子です。

バッファは表示させずに存在させることもできます。また、 emacs 自身が作業やユーザへのなにかしらの通知のためにバッファを 作成することもあります。

ここでは、バッファ間の、行き来の操作をやってみます。 メニューでいえば、「Buffers」に割り当てられている操作です。

まずは、同じ画面に表示されたバッファ間のカーソルの移動です。 まだ 1つしか画面にバッファがないよーという人は、しばし辛抱を・・・。

CTRL + x o

CTRL と x を同時に押した後、o だけ単体でおします。 こうすると、複数画面にバッファが存在している場合 次のバッファにカーソルが飛びます。

次は、カーソルのあるバッファの「最大化」です。 今は見なくていい画面内のバッファを非表示にします。

CTRL + x 1

ここまで覚えたところで、

CTRL + x CTRL + b

してみてください。今表示されているバッファの下に リストのようなバッファが表示されたと思います。2画面分割です。 内容は、現在存在しているバッファの一覧です。

3ペインの図

一覧は表示されましたが、カーソルが最初のバッファの位置に あるので一覧にいけません。 上で出てきた、CTRL + x o で一覧の方にバッファ を移動させます。移動させたら、何かしらのバッファ名の上で ENTER キーを押してみましょう。一覧が表示されていた バッファが、そのバッファの内容になると思います。 その上で、 CTRL + x 1 すれば、そのバッファで画面を占拠 できると思います。

ここまでできれば、いくつかのファイルを同時に編集できるようになりました。 画面を分割したい場合は、

CTRL + x 2

で、横分割できます。分割された先で新しいファイルを開けばいいわけです。 新しいファイルは、新しいバッファで編集が開始されます。

また、必要のなくなったバッファの削除はそのバッファに カーソルをあわせて、

CTRL + x k

で、削除することができます。ファイルとして保存されていない バッファの場合は、消していいかどうか訪ねられるでしょう。

後述する、elisp のアプリケーションもこのバッファを使って 動きます。なので、いろいろやっているうちにバッファが沢山 できてしまうので、一括で削除する方法も用意されています。

CTRL + x CTRL + b

で、先ほどの一覧画面を出し、一覧のバッファのバッファ名状で D キーを押下します。 D マークが付いたと思いますが、これが 消す対象のバッファです。 思う存分選んだら、x キーを押下 すると、削除が実行されます。 この、マーク to x 操作は emacs のいろいろな場面で出てきますので、覚えておくと いいでしょう。

以上で、基本的な操作はできるはずです。もし、いままで のコマンドだけで不便だなと感じたら、メニューを調べてみて ください。15年もあるソフトです。 たいていの場合、もっと便利なコマンドが用意され ています。 調べて覚えれば、忘れないもんですよね。

elisp

elisp とは、emacs 上で動くアプリケーションのようなものです。 画面を占拠して機能を提供するものや、編集操作を手助けする ものまで、さまざまなものがあります。

上でも書きましたが、これらも全てバッファ上で動くものなので 、新たにバッファを作成して動く elisp であれば、今まで覚えた操作のほとんどが有効です。

たとえば、emacs-w3m のような、emacs 上で www の表示を行う ものであれば、同じ操作で表示文字列のコピーなどが行えます。この へんが emacs が統合環境と呼ばれるゆえんだと思います。 VZ Editor でもマクロで作られたテトリスとかありましたが、あれと同じのりです。 (たとえが今風なのか、そーでないのか分かりかねますが。。)

さて、今までの操作にプラスして、アプリケーション型 elisp の 操作で何となく共通している部分があるので書いておきます。

q その elisp の終了とか戻るとか。 Q のときもある。
CTRL + c CTRL + c 別バッファで入力を促されたときの確定
CTRL + c CTRL + k 別バッファで入力を促されたときの破棄

emacs - w3m

emacs 上で動くテキストブラウザです。 テキストブラウザで有名な w3m の elisp版。 emacs-w3m。 valid html を読むには最適です。気合い入れれば商用サイトもみれます。

emacs-w3mの図

Wanderlust

メール・ニュースリーダです。 詳しくはこちらに書きました。 愛用中。

Wanderlustの図

navi2ch

2ちゃんねるビューア。 navi2ch

navi2chの図

その他スクリーンショット

emacs 標準機能のスクリーンショットです。

起動直後。

起動直後の図

ESC + x grep で、grep 検索 to タグジャンプの図。

grepの図

CTRL + x d で、Dired。ファイラーになった図。ファイルの上で v を押すと閲覧も可能。

Diredの図

Snake ゲーム。懐かしい。メニューの tool → game あたりから。

Snakeの図

終わりに

以上、ものぐさ仕様の操作説明でした。あとは知恵と勇気で何とかなるとおもわれます。 ぼく自身がにわか emacser なので、もっと良い操作あるとかあると思うのですが、 とっかかりとして感じて頂ければと思います。逆に言えば、自分でとっかかれなかった 部分だけ書いていたり。:-P

コマンド操作が手になじめば、いろいろなアプリで複雑な同じ操作が ショートカットでできるのは強みですね。また、操作結果が全て バッファなので、アイディア次第でいろいろなことができます。

CUI アプリなのですが、スクリーンショット多めにしてみました。 しかも、グリーン文字。ターミナルの設定によっては色分けとかも できますが、とりあえず基本的な感じで撮ってみました。

最初は、1200bps とかの回線で使われていたと思われるソフトウェア。 画面書換えを最小限に抑えたユーザインターフェースに、 当時のハッカーたちの面影を感じ、emacs の門をたたく 切っ掛けとなれば幸いです。

手段と目的の逆転。 そう、この文書は emacs で書かれました。

だって、おもしろいんだもん。