Emacs
2012年11月24日
いいエディタとは、
手に馴染み、書きごこちの好い
万年筆のようである。
パソコンは筆記用具として、テキスト情報に限って秀逸である。
テキストを扱うソフトウェアであるエディタが秀逸であれば、である。
最近vimを使っていてとても気持ちいいので、使ってきたエディタを振り返りつつ、エディタの今後を考えてみる。
1.はじめにMIFESあり
MS-DOS ver.2や3の時代は、あまり選択肢もなかったが、フルスクリーンエディタとしてはMIFESがスタンダードであった。
OSについてくるエディタはEDLINといって、何行目かを指定しその一行を編集できるワンラインエディタというしろもの。これではconfig.sysを一つ編集するのも大変な苦労だった。
一方、一太郎などのワープロソフトは今と変わらず、機能豊富でありながら、重量級アプリであり動作が重く使いにくかった。
しかしながら、日本語入力をFEP(Front End Processor)として分離する技術はこの頃に確立され、日本語のテキスト環境は整いつつあった時代。論文や小説、プログラム、パソコン通信への投稿記事など、ある程度まとまった量のテキストを作成、編集するのにエディタは最適だった。
ぼくも多分にもれず、MIFESによりテキストの扱いを体が覚えていった。
2.すばらしきVZ Editor
その後、ビレッジセンターからVZ Editorというツールが発売される。
さくさくした動作と、あらゆる機能のカスタマイズが可能で、かつVZマクロという独自の言語体系を装備していた。
また、常駐モードにより、MS-DOSのバックログが取れたり、瞬間的な起動ができることも重宝した。(当時のソフト起動はフローッピーディスクのLoadingでかなりの時間がかかった)
キーバインドはMIFES用のマクロがはじめから用意されており、ぼくもそれを利用していた。
しかし、徐々に自分の利用スタイルができてくると、できあいのマクロを改造し始めるようになる。
使い始めて、一年ほどでほぼ自分カスタマイズのマクロは完成の域に達して、ぼくのエディタの原風景=スタンダードは、この状態に確立された。
PCを使う作業の大部分を占めることになる、テキストの読み書きという操作環境ができてしまうと、その環境をどこでも使いたいと思うようになり、自分環境を1フロッピーに入れて持ち歩くようになった。
しかしながら数年後、MS-DOSは、GUIそしてマルチタスクという流れに飲み込まれ、消えていく。
windows3.1では、できることがMS-DOSとほぼ変わらないのでスルーしたが、windows95はそうもいかなかった。TCP/IPの搭載と、インターネットの普及のためである。
そして、自分としては完璧と信じるエディタ環境であるVZ Editorと泣く泣くお別れしなければならなくなった。
3.vi事始め
UNIXとの出会いは、すなわち、viとの出会いでもある。
PC環境はVZ一本で暮らせてきたが、UNIX環境にVZはなかった。当然である。
はじめはviのモードやコマンドのわかりにくさに、ストレスフルな操作感であったものの、Cが理解できるようになるよりも早く、viの操作に慣れていった。
まだインターネットがTCP/IPの巨大な実験場であり、webが発明されていなかった時代。viに関する情報は非常に少なかった。
しかし、運が良いことに、よい先輩に恵まれ、UNIXが職人文化といわれる由縁である口伝継承により、viの便利な機能を徐々に教わり、VZの時とはまた違うエクスペリエンスを得ることができた。
そのためか、viをカスタマイズすることはほとんどなく、標準キーバインドのまま10年近くも使い続けていくことになる。
viの偉大なことは、その歴史的経緯により、特殊キーを必要とせず、CTRLキーやESCを使うくらいで、あとは一般キーのみで操作が完結していることである。
そのため、SunOSのSunView、OpenWindows、X-windowsのMotiff、KDEといったウィンドウシステムとキーの競合もおきず、日本語入力のwnnやcannaとも相性がよかった。
4.windowsは秀丸に決まり
viはviとして必要十分であったが、windows95以降のPC用エディタは少々困った。VZ Editorの後継として発売されたWZ Editorは、いまいちいまにのできであったし、OS標準のnotepadはEDLINと同様問題外だった。
DOS窓でVZを使ってみても、あまり便利ではない。
なぜならマウスやウィンドウシステムといったGUI環境と、MS-DOS上で設計された操作感が合わないためだ。シングルタスクOSであったMS-DOSでは画面も占有するし、他のアプリケーションとのクリップボード経由の情報交換も必要ない。
そんななか秀丸をみつけ、ふたたびVZ Editorをいじくったように、秀丸マクロをいじくりはじめた。
そうして、体にしみ込んでいたMIFES+VZ Editor的な独自キーバインドやメニュー構成を、windows用にさらにアレンジし、ガラパゴス化していくことになる。
5.HappyHacking Keyboardの参入
ほぼ安定化したかに見えた秀丸カスタマイズであるが、キーボードを変えたことで、その安定が崩れていく。
そう、有名なHappy Hacking Keyboardを買ったのである。無駄なキーがなく、コンパクトで、そして打ち心地がいいキーボード。
なんとファンクションキーがないのである。いや、ないのがカッコイイのであるが、困ることもある。
メニューを出すのに、MIFESの時代から、ファンクションキーを多用していた。しかし、HHKではFnキーを押しながら数字を押すことでファンクションキーとして機能する。
これはかなり面倒くさい。
ファンクションキーには、選択開始や新規ファイルのオープンといったよく使う機能が割り当ててある。
それらをコントロールキーの組み合わせに変えていかなければならないのだが、キーバインドを追加しだすと、玉突きというか、ところてん式に次々と変更せざるえなくなる。
正直困まりはてた。
数日間悩んだあげく、助けを求めたのはEmacsのキーバインドだった。
6.Emacsっていいかも
Emacsもviと同じく、一般キーを中心にキーバインドが設計されている。モードがないため、編集機能などは基本的にCtrlキーとの組み合わせが原則となるが、長い歴史の中でそれなりに洗練されているだろうと期待した。
調べ始めると、予想以上に簡単に機能拡張ができる。
anything.elのできのようさに感激し、これはいけると思い、google calenderとの連携にわくわくし、org-modeには惚れ込んだ。表の作成、文章構造の入れ替えなど、ビジュアル的に効率的に行える。
気を良くして、秀丸もEmacsバインドにし、ubuntuにもEmacsの最新版を入れた。
そうして、Emacsのカスタマイズを楽しみながら、2,3週間使い続けてみたところ・・・。
・・・慣れない。
いつまでもキーバインドのメモをみないと、やりたいことができない。
何事も、最初の習得コストはかかるものであるが、それにしても覚えられない。
数が多すぎる。Emacsを使う頻度が徐々に減っていき、なおさら記憶と指にキーバインドが定着せず、結局、Emacsをあきらめることになった。
しかし、得られたものもある。
カーソルキーをつかわず、カーソルを動かすEmacs風のキーバインドは身に付いた。bashと共通なことが定着した大きな理由だろう。
そしてこれが、後ほど役に立つことになる。
7.ubuntuはgeditに決まり
ubuntuには、OSの設定でEmacs風キーバインドを有効にする、という項目がある。
これをいれておくと、アプリケーションのテキスト入力時に、Ctrl+aやCtrl+eといったカーソル移動が可能となる。
これはこれで便利であり、さらに標準のgeditもカスタマイズができるけっこう高機能なエディタであり、実用的である。
8.OS Xってどうなの
エディタが固定化しないまま、ふらふらしているうちに、Macbook Airを使うことができるようになった。
会社で買ったものだが、漠然とぼくが占有することがなんとなく許されている。
ということで、OSのセットアップもそこそこに、OSX用のエディタ探しである。
しかし結局、満足できるエディタアプリを見つけることができなかった。
かなりいい線にいったのが、みみかきエディタmiであるが、いま一歩、ぼく望むキーバインドにはならない。
9.たどり着いたところはvi
Emacsにトライして得られたことは、UNIX系エディタのカスタマイズ性の広さである。
viは基本的に標準のまま使ってきたわけだが、OSXやubuntuがメインマシンになってきている今、viいやvimを本格的にカスタマイズしてみるのがいいのではないかと考えた。
google先生の助けを借りて、手探りをしながらvimの航海に船出した。
vimをメインディタにするこを決心できたのは、皮肉にもEmacsのおかげである。
vimでインサートモードのときに、ちょっとだけカーソルを動かしたいが、そのためだけにノーマルモードに戻るのは面倒だ。そんなときは、Emacsのキーバインドでカーソルを動かす。これが、非常に気持ちいい。楽ちんである。
わずかであるけどもEmacsを経験したことで、vimの最大の特徴であり欠点でもあるモードの切替の手間が画期的に減らせることができた。これが、vimを主エディタに決心したブレークポイントとなった。
そして、unite,vimfilerといったpluginと出会い、.vimrcの深みにずぶずぶとはまっていくことになる。
憧れのorg-modeも、自分が気に入ったところは、vimでも実現できた。
10.マルチプラットフォーム
ubuntu,MacOS,windowsをせわしなく行き交う生活をしていると、ショートカットキーの使い分けが混乱する。
ウィンドウ操作のキーバインドは、OSに深く依存しているので、実質統一するのは難しい。
しかし、エディタはvimで統一することで、ほぼ完全に一致できる。
日本語入力もgoogle IME(Mozc)を入れて、キーバインドファイルのエクスポート/インポートで、これまた統一できる。
ウィンドウマネージャ、エディタ、IMEで競合が起きないように、注意して一度設計してしまえば、それぞれの設定を共有することで、かなり統一的な操作環境を構築することができた。
IME(Mozc)はMacの「ことえり」をベースとし、それをカスタマイズする。
なぜなら、Macのことえりは、ほぼ一般キーを中心に作られていることに気づいたからだ。ATOK等ではF6やF7で文字種変換をするので、そこから変えていくのが面倒だからだ。
11.そしてevernoteへ
こうしてできあがったエディタ環境であるが、それぞれのマシンで作ったテキストはファイル単位で散乱する。
極力Dropboxで集約していくものの、一時的にデスクトップやローカルハードディスクに置くこともある。
それが、違うOSを使っている時に参照したくなるなど、分散してしまう不便さが残る。
そこで、テキストデータの終着点を決めておく必要がある。
いままでの経験から、やはりEvernoteが終着点に相応しいことがわかってきた。
一番の理由は全文検索ができること。またEvernoteでは、iPhoneなどのスマフォに同期することだ。もちろん、Dropboxでも参照はできるが、オンラインであることが前提になる。Dropboxで一度参照したファイルは、キャッシュされるので、オフラインでも参照可能であるが、どのファイルをキャッシュしておくかを決めるのは結局手作業だ。
その点、Evernoteでは、オンライン時に同期しておけば、その後はオフラインでもみれる。(ただし、プレミアム会員に限る)
vimでもEverVimを使ってEvernoteに直接書き込むこができるので、アップ自体もさほど面倒ではない。
Evervimの使い方は、こちら(ubuntu)とこちら(OSX)に書いた。
Evernoteをストレージとし、vimをフロントエンドとした、マルチマシン、マルチプラットフォームでのテキスト管理システムの完成である。
sublime text 2というテキストエディタが最近評判がいい。
いままでテキストエディタはローカルのなかでいろいろなソフトウェアと連携してきた。IDEやメールソフト、コンパイラやインタープリタだ。
これからはEvernoteやDropbox、ブログシステムなど、ネットワークを介した連携も求められる。
vimが内部でpythonを呼んでネットワークを扱うように、エディタ自身の拡張言語がRESTなどのネットワーク機能を持つようになるだろう。
実際、iPhoneのエディタはそうなっている。
これからのエディタの進化が楽しみだ。
12.おまけ
VZ Editor時代、FEPはATOKが圧倒的なシェアを持っていたが、WXというフリーウェアのFEPが一世を風靡した。ATOKに比べて小さな目な辞書であるにもかかわらず、精度の高い変換を行うことができた。また、キーバインドも自由自在にカスタマイズできた。
パブリックドメインソフトウェアであったため、パソコン通信でダウンロードするのが一般的な入手方法であったが、当時の通信環境は2400bps+NMP5による圧縮といった時代である。辞書ファイルが1MBを超えていたので、そのダウンロードだけでも数時間かかるほど。雑誌についてくるのはCD-ROMではなく、3.5インチFDDだった。WXが付いたムック本にはFDDが4枚も付いていた気がする。
電話代を使い気長にダウンロードしすぐに使うか、翌月の雑誌のFDDを待つか、といった選択を迫られたものである。
2011年11月01日
calender機能があるのだが、今いち使い道がないと思っていたが、google calendarに登録したイベントが 読み込む方法がわかったので、俄然使える機能になった。
ブラウザを起動せず、emacsを終了しなくても、スケジュール確認、登録・削除ができる。
これはすばらしい。
設定方法は、以下を元ネタにしている。
http://code.google.com/p/emacs-google/wiki/googlecalendar
2 インストール方法
-
iCalendar.elは、emacsのelispディレクトリに置く
$ cp icalendar.el ~/.emacs.d/
-
google-emacsもemacsのelispディレクトリに置く
$ cp -r google ~/.emacs.d/
-
gdataは、pythonでインストール
展開したディレクトリで、
$ sudo python setup.py install
3 設定ファイル
~/.emacsに以下を追記する
|
GOOGLE USER IDは、@gmail.comの@マーク前の単語を書いておく。
code-directoryとcalendar directoryは、適宜書き換える。~/tmpとしたら、忘れずに~/tmpを作っていくこと。
google-calendar-urlは、対象のgoogleカレンダーの設定画面で、以下の限定icalのURLを貼り付ける。
.emacsに以下を書いておくと、emacsの起動のたびにカレンダーイベント情報がダウンロードされる。 そのため起動は遅くなる。
|
4 使い方
主たるキーは以下のとおり。
M-x calender | カレンダーバッファを作成しカレンダー表示 |
M-x google-calendar-download | カレンダーイベントのダウンロード |
C-c C-g d | 同上 |
C-c C-g q | quick event add |
C-c C-g a | detail event add |
M-x google-calendar-delete-event | event delete |
d | その日の予定を表示 |
m | 予定の入っている日を色付けする |