道具にこだわろう(1) エディタ編前編

こんばんは、mtaneda です。


先の記事で jaoki さんにショートカットキーの説明をして頂いたので、
#おっと、ここで敬語を使うと jaoki さんが私の先輩だとバレてしまいますね*smile*
私もショートカットキーネタを書きたいと思います。

みなさん、文章やプログラムを書くときにはエディタを使っていると思います。
そうですね、まず思い浮ぶエディタと言えば、
Microsoft Windows に付属の"メモ帳"でしょうか。
MacOS を利用している方なら、"テキストエディット"ですね。

その他にも沢山のエディタが存在します。

代表的なものでは、UNIX 系の OS には必ず付属している "vi" が挙げられますね。
勿論 BSD UNIX 系の MacOS X にも付属しています。

そして!
今回ご紹介したいのが "Emacs" です。

あら、聞いたことが無いですか?
実はこの Emacs、1970年代から存在する由緒正しいエディタなのです。
詳しい歴史はWikipedia に載っているので割愛しますが、とにかくスゴい!

では、どれ程のものかまずは画面をご覧頂きましょう。

emacs.png
いかがでしょうか。
とーーーっても地味で全然スゴそうに見えないですね。
でも、これが使い易いのですよ!
長い記事ですが、どうか最後までお読みください!

実はこの画像、MacOS X に標準で付属している Emacs です。
ターミナルアプリケーション(Windows で言うところのコマンドプロンプト用アプリケーション)なので地味ですが、ちゃんとお洒落なバージョンも用意されています。

代表的なお洒落バージョンとしてはよく、
語弊はありますが、それぞれ MacOS, Windows, UNIX に最適化されたものとお考えください。

私は Macユーザなのでとりあえず Carbon Emacs の画面をみて頂きましょう。

Carbon Emacs の画面
いかがでしょうか!
エディタ、すなわちメモ帳と同類のソフトウェアの画面でゲームのテトリスが動いています。
これほど高機能だということです。

さて、紙面(なんだそれ?)も少なくなってまいりましたので、
サクっとこの高機能なエディタがどれ程お仕事に有用なのか紹介致します。
#うーん、前置きが長くなりすぎた。
#きっと社長に怒られます。きっとそうに違いない*weep*

事例1
特定の文字列を指定した数貼り付けたい!

よくあることかはさて置き、*1
"ABCDEF" という文字列を 256回貼り付けたいとき、
メモ帳だと辛いですよね。
[Ctrl] キーを押しながら[v] キーを押すという動作を 256回もしないといけません。
しかし、Emacs ならこれがたった 9個の手順(15回くらいのキー操作)で可能なのです。

以下実例
1. [Ctrl] キーを押しながら [a] キーを押す。
意味: 文字列 "ABCDEF" を選択するためにカーソルを行頭に戻す。

2. [Ctrl] キーを押しながら [スペース] キーを押す。
意味: ここから選択するよ、という合図。

3. [Ctrl] キーを押しながら [e] キーを押す。
意味: 文字列 "ABCDEF" の行末にカーソルを移動する。

4. [command] キーを押しながら [w] キーを押す。
意味: 合図から現在のカーソル位置までを記憶(コピー)する。

5. [Ctrl] キーを押しながら [x] キーを押してから、[(] キーを押す。
意味: これから繰り返し行いたいことをはじめると宣言する。

6. [Ctrl] キーを押しながら [y] キーを押す。
意味: 手順 4. でコピーした文字列 "ABCDEF" を貼り付ける。

7. [Ctrl] キーを押しながら [x] キーを押してから、[)] キーを押す。
意味: 繰り返し行ないたいことの終了を宣言する。

8. [Ctrl] キーを押しながら [u] キーを押してから、数字を 254 と入力する。
意味: これから同じ事を 254回繰り返すと宣言する。

9. [Ctrl] キーを押しながら [x] キーを押してから、[e] キーを押す。
意味: 繰り返し行ないたいことを実行する。

最後に動画を貼りつけて今回は終ります。

#ちなみに何故キーボードマクロの紹介なのか?
#次回の操作も覚えると、
#123451234512345...というデータを簡単にカンマ区切りに変換できたりするからです。

次回は一般的なキーバインディング(ショートカットキー)の記事を書きます。
よろしくお願いします。



*1
例えばプログラムのテストで 1536文字のテストデータを作りたいときなどに使えませんか?
普通はスクリプト言語で作ると思いますがね*smile*