SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
「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 にも取り込んでい
    きたい

Contenu connexe

Tendances

メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacsShougo
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門Yuichi Ito
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdfわたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdfssuser868e2d
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例sairoutine
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術dena_study
 
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)真行 八田
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMPYusuke Kagata
 
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようCognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようShuto Suzuki
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門Tadahiro Ishisaka
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことgree_tech
 

Tendances (20)

メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdfわたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
 
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようCognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
 
Go入門
Go入門Go入門
Go入門
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 

Similaire à Vimから見たemacs

Shougoの開発環境
Shougoの開発環境Shougoの開発環境
Shougoの開発環境Shougo
 
PasteHub at kansai emacs 9th
PasteHub at kansai emacs 9thPasteHub at kansai emacs 9th
PasteHub at kansai emacs 9thKiyoka Nishiyama
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発Daisuke Kikuchi
 
Vim = VM
Vim = VMVim = VM
Vim = VMShougo
 
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm晃 遠山
 
DevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimDevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimt9md
 
Vimの基本の基本
Vimの基本の基本Vimの基本の基本
Vimの基本の基本晋 小沼
 
Unite vim
Unite vim Unite vim
Unite vim Shougo
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係Misao X
 
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティスeZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティスericsagnes
 
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくったCommon Lisp製のテキストエディタLemにフレーム多重化機能をつくった
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくったt-sin
 
Vim衆のつどい
Vim衆のつどいVim衆のつどい
Vim衆のつどいYuki Kokubun
 
Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境Satoshi imai
 
2016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim82016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim8cohama
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識alwei
 
vim入門 (vim study #1)
vim入門 (vim study #1)vim入門 (vim study #1)
vim入門 (vim study #1)bpstudy
 
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimUltimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimShougo
 

Similaire à Vimから見たemacs (20)

Shougoの開発環境
Shougoの開発環境Shougoの開発環境
Shougoの開発環境
 
VimM#3
VimM#3VimM#3
VimM#3
 
PasteHub at kansai emacs 9th
PasteHub at kansai emacs 9thPasteHub at kansai emacs 9th
PasteHub at kansai emacs 9th
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発
 
Vim = VM
Vim = VMVim = VM
Vim = VM
 
Tdd vim
Tdd vimTdd vim
Tdd vim
 
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm
 
DevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimDevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vim
 
Vimの基本の基本
Vimの基本の基本Vimの基本の基本
Vimの基本の基本
 
Unite vim
Unite vim Unite vim
Unite vim
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係
 
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティスeZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
 
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくったCommon Lisp製のテキストエディタLemにフレーム多重化機能をつくった
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
 
Vim衆のつどい
Vim衆のつどいVim衆のつどい
Vim衆のつどい
 
Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境
 
2016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim82016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim8
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
 
vim入門 (vim study #1)
vim入門 (vim study #1)vim入門 (vim study #1)
vim入門 (vim study #1)
 
rucs_vim LT
rucs_vim LTrucs_vim LT
rucs_vim LT
 
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimUltimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vim
 

Plus de Shougo

Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019Shougo
 
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017Shougo
 
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタShougo
 
deoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovimdeoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovimShougo
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovimShougo
 
neovim = VM
neovim = VMneovim = VM
neovim = VMShougo
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocompleteShougo
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけShougo
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environmentShougo
 

Plus de Shougo (9)

Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019
 
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
 
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ
 
deoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovimdeoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovim
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
 
neovim = VM
neovim = VMneovim = VM
neovim = VM
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocomplete
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
 

Vimから見たemacs

  • 1. 「Vimmer から見た Emacs 」 @ShougoMatsu
  • 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 にも取り込んでい きたい