vimから見たemacs

24
Vimmer から見た Emacs @ShougoMatsu

Upload: shougo

Post on 24-May-2015

18.240 views

Category:

Health & Medicine


2 download

TRANSCRIPT

Page 1: Vimから見たemacs

「Vimmer から見た Emacs 」

@ShougoMatsu

Page 2: Vimから見たemacs

自己紹介

● Vimmer 枠の ShougoMatsu です● 職業:普通のサラリーマン● Vim/Emacs 勉強会と聞いてやって来ました● 日本では珍しい重度の Vim 病患者なので、

「Vim」とつぶやいていないと調子が悪くなります

Page 3: Vimから見たemacs

作ってきたプラグイン

● auto-complete.el → neocomplcache● Dired.el, direx.el → vimfiler● anything.el(helm.el) → unite.vim● eshell → vimshell● package.el, el-get → neobundle.vim● hexl-mode (?) → vinarise

Page 4: Vimから見たemacs

このスライドの目的

● Vim と Emacs にはそれぞれ良いところと悪いところがある

● Vim と Emacs の文化を知り、相互理解を深めたい● スライドの内容は @ShougoMatsu の独断と偏見

に満ちています。これが Vimmer の総意だと勘違いしないでください。

Page 5: Vimから見たemacs

O Vim キーマッピング

● Emacs はモードが無いのでキーバインドが複雑● 私には、<C-c> <C-x> … とか押せない● Emacs だとカーソル移動時にコントロールを押し

忘れて泣けることがある● ただし、Vim もインサートモードのキーマッピングは

Emacs 並に足りない● つまり、 Vim はインサートモードで Emacs と戦うと

圧倒的に不利

Page 6: Vimから見たemacs

O Emacs スクリプト言語

● Vim script はよく批判される● 例: 無名関数がない、オブジェクト指向がやりづら

い、ライブラリの欠如、コマンドと関数の混在、eval(:execute) の多用、組み込み機能をカスタマイズしづらい etc...

● とはいえ、Emacs Lisp が Vim script よりも圧倒的に優れているわけではない

Page 7: Vimから見たemacs

O Vim ファイル編集能力

● Vim のモードは高速にファイルを編集するため● Vim のファイル編集能力は圧倒的● 気分は人間フィルタ● 自分もそれほど使いこなせているわけではない● 「詰め Vi(Vim)」 はあるが、「詰め Emacs」は見た

ことがない● おそらく思想の違い

Page 8: Vimから見たemacs

O Emacs 拡張性

● テキストエディタの枠を超えた圧倒的な拡張性● 最初から拡張することを考えられている● Vim の場合はスクリプト言語が後付け● 組み込み機能の自由自在なカスタマイズ● 本体の機能が Emacs Lisp で記述されている● ただし、パフォーマンスが犠牲になっている

Page 9: Vimから見たemacs

O Vim コミュニティ

● Vim の方がコミュニティの力がある(日本での話)● Vim-users.jp, vim-jp● Vim 本体で貢献する日本人の存在● Emacs の場合、個人で活動している人はいるが、あ

まりまとまっていない印象● ただ、これから Emacs のコミュニティも活性化する

かも?

Page 10: Vimから見たemacs

O Emacs 非同期通信

● Emacs は標準で非同期通信が可能● 標準添付されている Emacs でも非同期通信は多

用されている● エディタ内で引きこもるには必須の機能● Deferred.el, concurrent.el 等の補助ライブラリ● Vim の場合、Python 等の外部インタフェースや

vimproc を使用しないといけない

Page 11: Vimから見たemacs

O Vim 正規表現

● Emacs の正規表現はエスケープが多い● Vim の正規表現は '' を用いるとエスケープがいら

ない● ただし、\(, \), \?, \+ はなれない人は戸惑うらし

い● 更に、先読みや後読みが書きやすい

Page 12: Vimから見たemacs

O Emacs 標準添付プラグイン

● Emacs は標準添付プラグインが豊富● Eshell, org-mode, tramp, dired, ...● 節操がない、とも言える● Vim の場合、標準添付プラグインは殆ど無い● ほとんどの場合、組み込み機能でやってしまうため

Page 13: Vimから見たemacs

O Vim ユーザ数

● Vim の方がユーザ数が多い● ただし、普通のエディタの代わりに使う人も相当数

いる● Emacs の方が全体的なレベルは高い印象● Vim はあまり設定しなくても動くから?

Page 14: Vimから見たemacs

O Emacs 日本語入力

● 日本語入力はモードとの相性が悪い● Emacs は日本語入力用のフロントエンドも充実し

ている● Emacs は日本語入力中にカーソル移動ができる● Emacs には Org-mode もある

Page 15: Vimから見たemacs

O Vim シンタックスハイライト

● Vim のシンタックスハイライトは 300 種類を超える● シンタックスハイライトの文法もやたらと高機能● 自分が Vim を使い始めたのはシンタックスハイラ

イトの充実があったから

Page 16: Vimから見たemacs

O Emacs 開発安定性

● 一時期リリースが不定期だったが、最近のEmacs は開発がコミュニティベースで安定している

● Vim もコミュニティベースだが、パッチを当ててリリースするのは原作者の Bram Moolenaar 氏

● いつリリースされるかはBram氏にしかわからない● Vim のソースコードを読める人・パッチを書く人が

少ない● ただし、Vim には日本人の貢献も数多い(多言語

対応・オムニ補完)

Page 17: Vimから見たemacs

O Vim インデント

● Vim はなぜかインデントの設定がやたらと多い● 標準のインデントプラグインも充実している● 自作するのも難しくはない● Emacs はインデント設定で苦労している人が多い

印象がある

Page 18: Vimから見たemacs

O Emacs フォント

● Emacs は任意の位置でフォントを自由自在に変更できる

● もはやワープロのようである● Vim は等幅フォントのみ。一部フォントを変更できる

が制限が多い● Web ブラウザやプレゼンテーションツールを実現す

るには必須の機能● プログラマ用のエディタとして考えると必須機能で

はない

Page 19: Vimから見たemacs

O Vim パフォーマンス

● Vim が(ある程度)拡張性を犠牲にしても、組み込み機能を重視する理由

● ほとんどの機能が組み込みなので組み込み機能は圧倒的なパフォーマンスを誇る

● 単純なエディタとしてみた場合、速度はとても重要● ただし、 Vim script の実行速度が高速なわけでは

ない

Page 20: Vimから見たemacs

O Emacs 画像表示

● 個人的に、Emacs の羨ましい機能で 1, 2を争う● エディタとして考えるといらない● エディタとして考えないとほしい● まずは誰かパッチを書いてくれる人がいないかと

思っている

Page 21: Vimから見たemacs

O Vim 互換性

● Vim は上位互換性をとても重視している● 10 年以上前の Vim スクリプトが動作● 基本的に機能は削られない(非推奨になることは

ある)● Emacs はバージョンアップ時に関数が消えている

……● Vimでは、新機能を使う時くらいしかバージョン

チェックすることはない

Page 22: Vimから見たemacs

O Emacs シェル連携

● 標準で、shell-mode, eshell, term とやたらとたくさんある

● Emacs から出ない生活の実現● Vim でもプラグインを導入すれば可能。しかし標準

では無理

Page 23: Vimから見たemacs

まとめ

● Vim は開発用の機能、Emacs は開発以外の機能に優れている

● Emacs はバージョンアップ時に PDF を見れるようになったりするので、もはや訳分からないことになっている

● どっちがよいかはもはや個人の好み● 個人的には Emacs の機能も羨ましい● 不満があったら Vim script を書いたほうが速いの

で Emacs に移る気はない

Page 24: Vimから見たemacs

終わりに

● 最近 Sublime なんとか、や Eclipse などが現れてきていますが……

● 「IDEとどう戦うのか」● Vim と Emacs はこれからも良きライバルになって

行きましょう● そして Emacs の良い所は Vim にも取り込んでい

きたい