最近になって、ようやくEmacs Lispを勉強し始めている。
アウトプットしないと忘れてしまうので、このブログでも勉強したことをそのまま書く。
普通こういうブログは、ある程度くわしくなってから偉そうに書くのだが、ぼくはそれだと忘れてしまうので、その日に勉強したことをそのまま書くことにする。
ヘンなこと書いてたらツッコんでください。
今日は予告編ということで、Emacsとは何か、自分との付き合いを交えて書く。
アウトプットしないと忘れてしまうので、このブログでも勉強したことをそのまま書く。
普通こういうブログは、ある程度くわしくなってから偉そうに書くのだが、ぼくはそれだと忘れてしまうので、その日に勉強したことをそのまま書くことにする。
ヘンなこと書いてたらツッコんでください。
今日は予告編ということで、Emacsとは何か、自分との付き合いを交えて書く。
EmacsはMacで言えばテキストエディットやCot Editor、Windowsで言えばメモ帳や秀丸、Linuxで言えばvimやGeditと同じ、テキストエディターの仲間である。
UNIX生まれであるが、WindowsでもMacでも動く。
EmacsからUNIXのシェルを使うことが出来る。
ということは、基本的にUNIXを操作出来るということになる。
Windowsで言えばWZ EditorやMifesみたいなファイラーも付いていて、ファイルのコピー/移動/変名/削除も出来る。
ファイルに対してプログラムを実行して結果をボヨヨンと表示させることも出来る。
これをちょっとやってみよう。
下の画面は上下2画面に分割されていて、上半分にPerlのプログラム(標準入力から受け取ったテキストを逆順にソートして標準出力に吐き出す)を、下半分にテキストファイルを出している。
(プログラムをここで表示しておく必要はない。)
で、逆順にソートしたい行を下の画面で選択しておく。
選択した部分をEmacsではリージョンと言う。
で、shell-command-on-regionというEmacsのコマンドを呼び出す。
普通Altを押しながら|(パイプ)にバインドされている。
(このキーバインドをEmacsではM-|と書く。昔はAltキーの代わりにMetaキーと言うのを使った。そのうちParaキーを使うんじゃないだろうか(化学ギャグ))
で、処理するプログラム(上のプログラム)を指定してEnterを叩く。
下のリージョンがプログラムで処理され、処理結果が新しいウィンドウに表示されている。
便利さ伝わってますか。
新しいウィンドウに表示するだけでなく、M-|の前にC-u(Ctrl+Uのこと)を押しておけば編集中のテキストのカーソル位置に出力結果を挿入することも出来る。
つまり、編集中のテキストの一部をプログラムに渡して、プログラムに渡した結果でその一部を置き換えることが出来るのである。
便利さが伝わるといいなあ。
(ちなみに、ユーザーが追加したPATHに置いたプログラムを実行するには、一工夫設定する必要がある。下のサイトが参考になった。
EmacsでPATHの設定が引き継がれない問題をエレガントに解決する - Qiita)
上ではPerlのプログラムを実行したが、Emacs自体、Emacs Lisp(本ブログではこれ以降Elispと略す)という言語で無限にカスタマイズ出来る。
キーバインド(キーボードとコマンドの対応)を1個変えるという、ちょっとした変更も出来る。
メーラーのような巨大なプログラムを作ることも出来る。
Windowsで言えばExcel VBAを使えばExcelをかなりカスタマイズすることが出来るが、あれよりももっと徹底している。
実はEmacsエディタ自身、Emacs Lisp言語のインタープリターなのである。
昔のパソコンは起動するとBASICインタープリターがすぐに立ち上がって、BASICのプログラムを書いてパソコンを操作することが出来たが、あの感覚に近い。
エディターからメールも出せるから、ハマったらパソコンを使っている時間は、大体Emacsを使っていることになる。
正確に言うと、そういうこともかつてはあった。
実は今はそうでもない。
最近はWebを使ってする用事が増えたので、ブラウザー:Emacsが6:4ぐらいである。
Emacsで起動するWebブラウザーというのもあるが、現状レイアウトが崩れてしまうのであまり実用的ではない。
Emacs上で動くもっとも有名なメーラーの一つ、Mewの作者である山本和彦さんがFirefoxをEmacsと同じキーバインドで使用出来るアドオン、Firemacsというのを公開されている。
Firemacs v4.3
スゲー!と思ったが、山本さんであってもこういうものを開発するということは、やはりEmacs上でのWeb作業は無理がある、ということであろう。
しかし、冷静に考えたら、WebでしなくてもいいことをWebでしている、という場合もある。
メールの読み書きは明らかに上記のMewやWanderlustのようなEmacsマクロでやった方がラクチンである。
メールはテキストであるから、エディターでやるのは自然なことであるから、WebのGmailを手放せる。
(MewからもWanderlustからもIMAPでGmailが読める。)
しかし最近は生活記録や体重記録のようなことをGoogle Driveの表計算ソフトでやっているし、ToDoはToodledoというサービスでやっている。
だからいちいちFirefoxを使ってWeb経由で作業しているのだが、こういうのはEmacsに集中できないだろうか。
Dropboxにでも置いておけば、テキストファイルだから、他の環境からも見られるのである。
この用途にはToDo機能も兼ね備えたアウトライン エディタ、org-modeというのがすごそうである。
Org mode for Emacs: あなたの生活をプレーンテキストで
orgmode.jp
あと絶対にEmacsに移行できそうなのがTwitterである。
あと2ちゃんねるのアクセスもカンタンに出来るという話である。
なぜ2013年も押し詰まってここにきてEmacsで盛り上がっているかというと、以下のような本に出会ったからだ。
まだ本格的に読み込んでいないのだが、目次を読むだけでもすごさが伝わってくる。
Emacsだけでここまで出来るのか!と思うと同時に、Emacsだけでここまでやろうと思うのか!とも思う。
著者のすごさだけでなくて、そこまでさせるEmacsの魔性が伝わってくる。
単純に機能を拡張するだけでなく、Emacsが長い間問題であった「とっつきにくさ」も解消しようとしているのだ。
ただし、ぼくはEmacsをカスタマイズする前に、ELispの基礎を学びたいと思った。
家にこういう本があって、読まずに置いていたのである。
絶版だ!
けど、これが短い本ながらスルメのように面白くて、これを使って勉強するのが最近の楽しみである。
あと、上のMewの山本さんの本もある。
これも絶版で、短い本だが、古書価格が高騰している。
買っててよかったわ~。
ということで、文字コードのネタがない場合はElispの勉強ノートを随時アップしていくので、よろしければお付き合いください。
UNIX生まれであるが、WindowsでもMacでも動く。
EmacsからUNIXのシェルを使うことが出来る。
ということは、基本的にUNIXを操作出来るということになる。
Windowsで言えばWZ EditorやMifesみたいなファイラーも付いていて、ファイルのコピー/移動/変名/削除も出来る。
ファイルに対してプログラムを実行して結果をボヨヨンと表示させることも出来る。
これをちょっとやってみよう。
下の画面は上下2画面に分割されていて、上半分にPerlのプログラム(標準入力から受け取ったテキストを逆順にソートして標準出力に吐き出す)を、下半分にテキストファイルを出している。
(プログラムをここで表示しておく必要はない。)
で、逆順にソートしたい行を下の画面で選択しておく。
選択した部分をEmacsではリージョンと言う。
で、shell-command-on-regionというEmacsのコマンドを呼び出す。
普通Altを押しながら|(パイプ)にバインドされている。
(このキーバインドをEmacsではM-|と書く。昔はAltキーの代わりにMetaキーと言うのを使った。そのうちParaキーを使うんじゃないだろうか(化学ギャグ))
で、処理するプログラム(上のプログラム)を指定してEnterを叩く。
下のリージョンがプログラムで処理され、処理結果が新しいウィンドウに表示されている。
便利さ伝わってますか。
新しいウィンドウに表示するだけでなく、M-|の前にC-u(Ctrl+Uのこと)を押しておけば編集中のテキストのカーソル位置に出力結果を挿入することも出来る。
つまり、編集中のテキストの一部をプログラムに渡して、プログラムに渡した結果でその一部を置き換えることが出来るのである。
便利さが伝わるといいなあ。
(ちなみに、ユーザーが追加したPATHに置いたプログラムを実行するには、一工夫設定する必要がある。下のサイトが参考になった。
EmacsでPATHの設定が引き継がれない問題をエレガントに解決する - Qiita)
上ではPerlのプログラムを実行したが、Emacs自体、Emacs Lisp(本ブログではこれ以降Elispと略す)という言語で無限にカスタマイズ出来る。
キーバインド(キーボードとコマンドの対応)を1個変えるという、ちょっとした変更も出来る。
メーラーのような巨大なプログラムを作ることも出来る。
Windowsで言えばExcel VBAを使えばExcelをかなりカスタマイズすることが出来るが、あれよりももっと徹底している。
実はEmacsエディタ自身、Emacs Lisp言語のインタープリターなのである。
昔のパソコンは起動するとBASICインタープリターがすぐに立ち上がって、BASICのプログラムを書いてパソコンを操作することが出来たが、あの感覚に近い。
エディターからメールも出せるから、ハマったらパソコンを使っている時間は、大体Emacsを使っていることになる。
正確に言うと、そういうこともかつてはあった。
実は今はそうでもない。
最近はWebを使ってする用事が増えたので、ブラウザー:Emacsが6:4ぐらいである。
Emacsで起動するWebブラウザーというのもあるが、現状レイアウトが崩れてしまうのであまり実用的ではない。
Emacs上で動くもっとも有名なメーラーの一つ、Mewの作者である山本和彦さんがFirefoxをEmacsと同じキーバインドで使用出来るアドオン、Firemacsというのを公開されている。
Firemacs v4.3
スゲー!と思ったが、山本さんであってもこういうものを開発するということは、やはりEmacs上でのWeb作業は無理がある、ということであろう。
しかし、冷静に考えたら、WebでしなくてもいいことをWebでしている、という場合もある。
メールの読み書きは明らかに上記のMewやWanderlustのようなEmacsマクロでやった方がラクチンである。
メールはテキストであるから、エディターでやるのは自然なことであるから、WebのGmailを手放せる。
(MewからもWanderlustからもIMAPでGmailが読める。)
しかし最近は生活記録や体重記録のようなことをGoogle Driveの表計算ソフトでやっているし、ToDoはToodledoというサービスでやっている。
だからいちいちFirefoxを使ってWeb経由で作業しているのだが、こういうのはEmacsに集中できないだろうか。
Dropboxにでも置いておけば、テキストファイルだから、他の環境からも見られるのである。
この用途にはToDo機能も兼ね備えたアウトライン エディタ、org-modeというのがすごそうである。
Org mode for Emacs: あなたの生活をプレーンテキストで
orgmode.jp
あと絶対にEmacsに移行できそうなのがTwitterである。
あと2ちゃんねるのアクセスもカンタンに出来るという話である。
なぜ2013年も押し詰まってここにきてEmacsで盛り上がっているかというと、以下のような本に出会ったからだ。
まだ本格的に読み込んでいないのだが、目次を読むだけでもすごさが伝わってくる。
Emacsだけでここまで出来るのか!と思うと同時に、Emacsだけでここまでやろうと思うのか!とも思う。
著者のすごさだけでなくて、そこまでさせるEmacsの魔性が伝わってくる。
単純に機能を拡張するだけでなく、Emacsが長い間問題であった「とっつきにくさ」も解消しようとしているのだ。
ただし、ぼくはEmacsをカスタマイズする前に、ELispの基礎を学びたいと思った。
家にこういう本があって、読まずに置いていたのである。
絶版だ!
けど、これが短い本ながらスルメのように面白くて、これを使って勉強するのが最近の楽しみである。
あと、上のMewの山本さんの本もある。
これも絶版で、短い本だが、古書価格が高騰している。
買っててよかったわ~。
ということで、文字コードのネタがない場合はElispの勉強ノートを随時アップしていくので、よろしければお付き合いください。