「Vimmer から見た Emacs 」




     @ShougoMatsu
自己紹介

●   Vimmer 枠の ShougoMatsu です
●   職業:普通のサラリーマン
●   Vim/Emacs 勉強会と聞いてやって来ました
●   日本では珍しい重度の Vim 病患者なので、
    「Vim」とつぶやいていないと調子が悪くなります
作ってきたプラグイン

●   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
このスライドの目的

●   Vim と Emacs にはそれぞれ良いところと悪いとこ
    ろがある
●   Vim と Emacs の文化を知り、相互理解を深めたい
●   スライドの内容は @ShougoMatsu の独断と偏見
    に満ちています。これが Vimmer の総意だと勘違
    いしないでください。
O Vim キーマッピング

●   Emacs はモードが無いのでキーバインドが複雑
●   私には、<C-c> <C-x> … とか押せない
●   Emacs だとカーソル移動時にコントロールを押し
    忘れて泣けることがある
●   ただし、Vim もインサートモードのキーマッピングは
    Emacs 並に足りない
●   つまり、 Vim はインサートモードで Emacs と戦うと
    圧倒的に不利
O Emacs スクリプト言語

●   Vim script はよく批判される
●   例: 無名関数がない、オブジェクト指向がやりづら
    い、ライブラリの欠如、コマンドと関数の混
    在、eval(:execute) の多用、組み込み機能をカスタ
    マイズしづらい etc...
●   とはいえ、Emacs Lisp が Vim script よりも圧倒的
    に優れているわけではない
O Vim ファイル編集能力

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

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

●   Vim の方がコミュニティの力がある(日本での話)
●   Vim-users.jp, vim-jp
●   Vim 本体で貢献する日本人の存在
●   Emacs の場合、個人で活動している人はいるが、あ
    まりまとまっていない印象
●   ただ、これから Emacs のコミュニティも活性化する
    かも?
O Emacs 非同期通信

●   Emacs は標準で非同期通信が可能
●   標準添付されている Emacs でも非同期通信は多
    用されている
●   エディタ内で引きこもるには必須の機能
●   Deferred.el, concurrent.el 等の補助ライブラリ
●   Vim の場合、Python 等の外部インタフェースや
    vimproc を使用しないといけない
O Vim 正規表現

●   Emacs の正規表現はエスケープが多い
●   Vim の正規表現は '' を用いるとエスケープがいら
    ない
●   ただし、(, ), ?, + はなれない人は戸惑うらし
    い
●   更に、先読みや後読みが書きやすい
O Emacs 標準添付プラグイン

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

●   Vim の方がユーザ数が多い
●   ただし、普通のエディタの代わりに使う人も相当数
    いる
●   Emacs の方が全体的なレベルは高い印象
●   Vim はあまり設定しなくても動くから?
O Emacs 日本語入力

●   日本語入力はモードとの相性が悪い
●   Emacs は日本語入力用のフロントエンドも充実し
    ている
●   Emacs は日本語入力中にカーソル移動ができる
●   Emacs には Org-mode もある
O Vim シンタックスハイライト

●   Vim のシンタックスハイライトは 300 種類を超える
●   シンタックスハイライトの文法もやたらと高機能
●   自分が Vim を使い始めたのはシンタックスハイラ
    イトの充実があったから
O Emacs 開発安定性

●   一時期リリースが不定期だったが、最近のEmacs
    は開発がコミュニティベースで安定している
●   Vim もコミュニティベースだが、パッチを当ててリ
    リースするのは原作者の Bram Moolenaar 氏
●   いつリリースされるかはBram氏にしかわからない
●   Vim のソースコードを読める人・パッチを書く人が
    少ない
●   ただし、Vim には日本人の貢献も数多い(多言語
    対応・オムニ補完)
O Vim インデント

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

●   Emacs は任意の位置でフォントを自由自在に変更
    できる
●   もはやワープロのようである
●   Vim は等幅フォントのみ。一部フォントを変更できる
    が制限が多い
●   Web ブラウザやプレゼンテーションツールを実現す
    るには必須の機能
●   プログラマ用のエディタとして考えると必須機能で
    はない
O Vim パフォーマンス

●   Vim が(ある程度)拡張性を犠牲にしても、組み込
    み機能を重視する理由
●   ほとんどの機能が組み込みなので組み込み機能は
    圧倒的なパフォーマンスを誇る
●   単純なエディタとしてみた場合、速度はとても重要
●   ただし、 Vim script の実行速度が高速なわけでは
    ない
O Emacs 画像表示

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

●   Vim は上位互換性をとても重視している
●   10 年以上前の Vim スクリプトが動作
●   基本的に機能は削られない(非推奨になることは
    ある)
●   Emacs はバージョンアップ時に関数が消えている
    ……
●   Vimでは、新機能を使う時くらいしかバージョン
    チェックすることはない
O Emacs シェル連携

●   標準で、shell-mode, eshell, term とやたらとたく
    さんある
●   Emacs から出ない生活の実現
●   Vim でもプラグインを導入すれば可能。しかし標準
    では無理
まとめ

●   Vim は開発用の機能、Emacs は開発以外の機能
    に優れている
●   Emacs はバージョンアップ時に PDF を見れるよう
    になったりするので、もはや訳分からないことになっ
    ている
●   どっちがよいかはもはや個人の好み
●   個人的には Emacs の機能も羨ましい
●   不満があったら Vim script を書いたほうが速いの
    で Emacs に移る気はない
終わりに

●   最近 Sublime なんとか、や Eclipse などが現れて
    きていますが……
●   「IDEとどう戦うのか」
●   Vim と Emacs はこれからも良きライバルになって
    行きましょう
●   そして Emacs の良い所は Vim にも取り込んでい
    きたい

Vimから見たemacs

  • 1.
  • 2.
    自己紹介 ● Vimmer 枠の ShougoMatsu です ● 職業:普通のサラリーマン ● Vim/Emacs 勉強会と聞いてやって来ました ● 日本では珍しい重度の Vim 病患者なので、 「Vim」とつぶやいていないと調子が悪くなります
  • 3.
    作ってきたプラグイン ● 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
  • 4.
    このスライドの目的 ● Vim と Emacs にはそれぞれ良いところと悪いとこ ろがある ● Vim と Emacs の文化を知り、相互理解を深めたい ● スライドの内容は @ShougoMatsu の独断と偏見 に満ちています。これが Vimmer の総意だと勘違 いしないでください。
  • 5.
    O Vim キーマッピング ● Emacs はモードが無いのでキーバインドが複雑 ● 私には、<C-c> <C-x> … とか押せない ● Emacs だとカーソル移動時にコントロールを押し 忘れて泣けることがある ● ただし、Vim もインサートモードのキーマッピングは Emacs 並に足りない ● つまり、 Vim はインサートモードで Emacs と戦うと 圧倒的に不利
  • 6.
    O Emacs スクリプト言語 ● Vim script はよく批判される ● 例: 無名関数がない、オブジェクト指向がやりづら い、ライブラリの欠如、コマンドと関数の混 在、eval(:execute) の多用、組み込み機能をカスタ マイズしづらい etc... ● とはいえ、Emacs Lisp が Vim script よりも圧倒的 に優れているわけではない
  • 7.
    O Vim ファイル編集能力 ● Vim のモードは高速にファイルを編集するため ● Vim のファイル編集能力は圧倒的 ● 気分は人間フィルタ ● 自分もそれほど使いこなせているわけではない ● 「詰め Vi(Vim)」 はあるが、「詰め Emacs」は見た ことがない ● おそらく思想の違い
  • 8.
    O Emacs 拡張性 ● テキストエディタの枠を超えた圧倒的な拡張性 ● 最初から拡張することを考えられている ● Vim の場合はスクリプト言語が後付け ● 組み込み機能の自由自在なカスタマイズ ● 本体の機能が Emacs Lisp で記述されている ● ただし、パフォーマンスが犠牲になっている
  • 9.
    O Vim コミュニティ ● Vim の方がコミュニティの力がある(日本での話) ● Vim-users.jp, vim-jp ● Vim 本体で貢献する日本人の存在 ● Emacs の場合、個人で活動している人はいるが、あ まりまとまっていない印象 ● ただ、これから Emacs のコミュニティも活性化する かも?
  • 10.
    O Emacs 非同期通信 ● Emacs は標準で非同期通信が可能 ● 標準添付されている Emacs でも非同期通信は多 用されている ● エディタ内で引きこもるには必須の機能 ● Deferred.el, concurrent.el 等の補助ライブラリ ● Vim の場合、Python 等の外部インタフェースや vimproc を使用しないといけない
  • 11.
    O Vim 正規表現 ● Emacs の正規表現はエスケープが多い ● Vim の正規表現は '' を用いるとエスケープがいら ない ● ただし、(, ), ?, + はなれない人は戸惑うらし い ● 更に、先読みや後読みが書きやすい
  • 12.
    O Emacs 標準添付プラグイン ● Emacs は標準添付プラグインが豊富 ● Eshell, org-mode, tramp, dired, ... ● 節操がない、とも言える ● Vim の場合、標準添付プラグインは殆ど無い ● ほとんどの場合、組み込み機能でやってしまうため
  • 13.
    O Vim ユーザ数 ● Vim の方がユーザ数が多い ● ただし、普通のエディタの代わりに使う人も相当数 いる ● Emacs の方が全体的なレベルは高い印象 ● Vim はあまり設定しなくても動くから?
  • 14.
    O Emacs 日本語入力 ● 日本語入力はモードとの相性が悪い ● Emacs は日本語入力用のフロントエンドも充実し ている ● Emacs は日本語入力中にカーソル移動ができる ● Emacs には Org-mode もある
  • 15.
    O Vim シンタックスハイライト ● Vim のシンタックスハイライトは 300 種類を超える ● シンタックスハイライトの文法もやたらと高機能 ● 自分が Vim を使い始めたのはシンタックスハイラ イトの充実があったから
  • 16.
    O Emacs 開発安定性 ● 一時期リリースが不定期だったが、最近のEmacs は開発がコミュニティベースで安定している ● Vim もコミュニティベースだが、パッチを当ててリ リースするのは原作者の Bram Moolenaar 氏 ● いつリリースされるかはBram氏にしかわからない ● Vim のソースコードを読める人・パッチを書く人が 少ない ● ただし、Vim には日本人の貢献も数多い(多言語 対応・オムニ補完)
  • 17.
    O Vim インデント ● Vim はなぜかインデントの設定がやたらと多い ● 標準のインデントプラグインも充実している ● 自作するのも難しくはない ● Emacs はインデント設定で苦労している人が多い 印象がある
  • 18.
    O Emacs フォント ● Emacs は任意の位置でフォントを自由自在に変更 できる ● もはやワープロのようである ● Vim は等幅フォントのみ。一部フォントを変更できる が制限が多い ● Web ブラウザやプレゼンテーションツールを実現す るには必須の機能 ● プログラマ用のエディタとして考えると必須機能で はない
  • 19.
    O Vim パフォーマンス ● Vim が(ある程度)拡張性を犠牲にしても、組み込 み機能を重視する理由 ● ほとんどの機能が組み込みなので組み込み機能は 圧倒的なパフォーマンスを誇る ● 単純なエディタとしてみた場合、速度はとても重要 ● ただし、 Vim script の実行速度が高速なわけでは ない
  • 20.
    O Emacs 画像表示 ● 個人的に、Emacs の羨ましい機能で 1, 2を争う ● エディタとして考えるといらない ● エディタとして考えないとほしい ● まずは誰かパッチを書いてくれる人がいないかと 思っている
  • 21.
    O Vim 互換性 ● Vim は上位互換性をとても重視している ● 10 年以上前の Vim スクリプトが動作 ● 基本的に機能は削られない(非推奨になることは ある) ● Emacs はバージョンアップ時に関数が消えている …… ● Vimでは、新機能を使う時くらいしかバージョン チェックすることはない
  • 22.
    O Emacs シェル連携 ● 標準で、shell-mode, eshell, term とやたらとたく さんある ● Emacs から出ない生活の実現 ● Vim でもプラグインを導入すれば可能。しかし標準 では無理
  • 23.
    まとめ ● Vim は開発用の機能、Emacs は開発以外の機能 に優れている ● Emacs はバージョンアップ時に PDF を見れるよう になったりするので、もはや訳分からないことになっ ている ● どっちがよいかはもはや個人の好み ● 個人的には Emacs の機能も羨ましい ● 不満があったら Vim script を書いたほうが速いの で Emacs に移る気はない
  • 24.
    終わりに ● 最近 Sublime なんとか、や Eclipse などが現れて きていますが…… ● 「IDEとどう戦うのか」 ● Vim と Emacs はこれからも良きライバルになって 行きましょう ● そして Emacs の良い所は Vim にも取り込んでい きたい