Shougo (暗黒美夢王)
我が evil-mode が嫌いな理由
〜evil-mode の闇〜
※:この発表はShougoではなく、暗黒美夢王がお送りします
お久しぶりだ、フハハハ
● 我が名は暗黒美夢王、闇の Vim を使う者……
● 最近 neovim がマイブームであり、neovim のための非同期補完プラグインを作
ろうとしている
– 現在は neovim の if_python 対応部分を書き直している
– gitter で neovim の開発者とチャットしたり
● せっかくの Emacs 勉強会なので、evil-mode について発表することにした
● Vim の話が多数スライドに登場するが、今回は内容が evil-mode なので仕様と
なる
● 内容は Vim 使用者向けかもしれない
●
VimVim勉強会以外では歌わないというポリシーがある勉強会以外では歌わないというポリシーがある
ため、歌はないため、歌はない
注意だ、フハハハ
● この発表では evil-mode 使いが気分を悪くするかもしれない
●
ただし、我はただし、我は evil-modeevil-mode の出来は良いと考えの出来は良いと考え
ているている
– evil-mode を超える Vim 風拡張は存在しない
● ここで議論するのは evil-mode の本質的な問題であり、evil-
mode が誰もがインストールするべき万能の拡張機能ではない
ということである
● 「なぜ暗黒美夢王が Vim 風拡張を使わないのか」と言い換え
てしまっても良い
ケーススタディ
● A「Vim で neo 系プラグインを設定するのにつかれた……。何
でこんなに設定する必要があるの」
● B「A君、もうVim はオワコン、やはり時代は Emacs だよ。最近
の Emacs には evil-mode があって、Vim プラグインも動くん
だ」
● A「えっ、何それ初耳だよ。Emacs はすごいんだね。よし、Emacs
+ evil-mode に早速乗り換えよう!」
● A「evil-mode のこの機能、Vim で見たことある!」
その後の A 君
● A「B 君、僕は Emacs + evil-mode でいつでも evil-mode の
設定をしているんだ。もうキミと遊んでいる時間はないよ」
● B「なんていうことだ、A君。僕よりテキストエディタの方が大事
だなんて……」
● こうして、A 君は Emacs + evil-mode に移行してテキストエ
ディタとの幸せな日々を過ごしたのでした
●
めでたし、めでたし……?
ちょっと待った!!
●
本当にその選択は大丈夫なのか?
● evil-mode は Vim plugin が動作するのか?
● Vim からの移行は楽なのか?
● 意外と知られていない evil-mode への移行のリスク
● evil-mode の利点と欠点を正しく理解するべきである
Vim script が動作しない
● evil-mode では Vim script が動作しない
● Vim script や Vim plugin の互換性は 0 %
● 既存の Vim script を全て捨て、Emacs Lisp 資産に置き換える
必要がある
●
一部対応するプラグインはあるが、細かいところで挙動は違う
● 「evil-mode では Vim script や Vim プラグインが動く」という
嘘は言わないように!
evil-mode は情報が少ない
●
使用している人が相対的に少数
●
日本語の情報は更に少ない
● tarao 氏のページは情報がまとまっていて極めて参考になる
が、ちょっと古い
http://d.hatena.ne.jp/tarao/20130303/evil_intro
●
困ったことがあっても、なかなか人に聞けない
何かの拍子に Emacs が顔を出す
● evil-mode の wrap は完全ではない
● 既存のプラグインの操作体系は evil-mode を考慮していない
●
我慢するのか、自分で設定するのか
試される Emacs Lisp 力
● evil-mode では Emacs Lisp を書かないという選択肢はない
● evil-mode 独自の概念はとても複雑
●
設定が難しく、解説を読むだけでクラクラする
http://d.hatena.ne.jp/tarao/20130304/evil_config
● Emacs Lisp を進んで書くような人は Emacs 界にも 50 人に
1人〜2人くらいしかいないのだが……
多数の拡張機能のインストールが必要
● evil-mode は機能が分割されている
●
各種プラグインを模倣した拡張機能達の例:
evil-nerdcommenter, evil-rails, evil-little-words, ...
● Vim に近づけるためには、既存の Emacs 拡張機能のインス
トールや設定を行う必要もある
あなたに自由な時間はあるか?
● evil-mode の設定は時間がかかる
● Emacs の設定も同時に行う必要がある
●
テキストエディタの「設定」は一朝一夕では無理
●
「テキストエディタは道具」という軽い認識では困難がある
●
進学、就職、結婚、子供……それらの環境の変化があっても、テ
キストエディタの設定を続けることはできるか?
– テキストエディタと人生の両立
●
我の人生はテキストエディタに捧げる……くらいの情熱が必要
neovim という選択肢
● neovim だと Vim plugin の互換性が 98%
● 既存の Vim の設定もほぼそのまま動く
– このレベルになるとVim と互換性があるといえる
– 既存の Vim に不満があり、Vim script 資産を捨てたくないならこちら
● 非同期通信、各種プログラミング言語で拡張可能、GUI クライアント、端
末機能の内蔵が特徴的
●
まだ理想には遠いが、現段階でも十分実用的
● 理論上では Lisp で拡張を開発可能
– ベースとなる仕組みはある
● 一方の Guile Emacs は……(察し)
evil-mode に向いている人
● Emacs の設定に割く時間がある
● Emacs Lisp が大好き
●
困難を自分で解決できる能力がある
● Vim script が嫌いだ
● 足りないものは Emacs Lisp で作る
● メインの開発環境は Windows ではない。もしくは UNIX 環境
へのリモートログインである
● Emacs のコミュニティは俺が盛り上げる!
evil-mode に向いていない人
● 過去の Vim script の資産が捨てられない
● Emacs の拡張機能は Vim の既存のプラグインと細かいところで
挙動が異なる
● Emacs Lisp を書きたくない
● 既に Vim script で多数のプラグインを作成している
● Vim のコミュニティが好きだ
●
テキストエディタの起動時間を気にしてしまう
● 「実は…… Vim script を書くのが好きなんです」
● Vim にパッチを書いている
暗黒美夢王の場合……
● 過去の Vim script の資産が捨てられない(プラグイン含めて数万
行)
● Emacs の拡張機能は Vim の既存のプラグインと細かいところで
挙動が異なるので気に入らない
● Emacs Lisp を書きたくない
● 既に Vim script で多数のプラグインを作成している。再実装してら
れない
● Vim のコミュニティが好きだ
●
テキストエディタの起動時間を気にしてしまう
● Vim script を書くのが好き。なぜ Dis られるのか理解できない
Emacs に移住する(した)者たちへ
● Vimmer としては悲しいが、Vim に出来ないことがあるのは事
実なので、止めはしない
● どうせ Emacs に移住するのなら Emacs をサポートしてやって
ほしい
● Emacs は誰かが新しい拡張機能を書かないと徐々に弱ってい
く
● 未来の Emacs を支えるのは、あなた達なのだ
終わりに
●
今回の解説でお分かりいただけだであろうか
● evil-mode は Vim を模倣する拡張機能としては極めて優秀だ
● evil-mode と他の Vim 風拡張機能では雲泥の差がある
● しかし、 evil-mode では Vim script が動かないので Vim と互換
性があるとは認められない
● あなたに evil-mode を使う「覚悟」はあるか?
● それは漠然と Vim を使っていた時よりも困難な道程である
● 我は evil-mode が嫌いというより、Vim フォーラムでよく見る
「間違った evil-mode の宣伝」が嫌いなのかもしれない
終わりに
● あなたは「VimをベースにしたEmacsが欲しいのか」
→ neovim
● それとも「EmacsをベースにしたVimが欲しいのか」
→ evil-mode
● 素の Emacs が最高なのか

我が evil-mode を嫌いな理由 〜evil-mode の闇〜

  • 1.
    Shougo (暗黒美夢王) 我が evil-modeが嫌いな理由 〜evil-mode の闇〜 ※:この発表はShougoではなく、暗黒美夢王がお送りします
  • 2.
    お久しぶりだ、フハハハ ● 我が名は暗黒美夢王、闇の Vimを使う者…… ● 最近 neovim がマイブームであり、neovim のための非同期補完プラグインを作 ろうとしている – 現在は neovim の if_python 対応部分を書き直している – gitter で neovim の開発者とチャットしたり ● せっかくの Emacs 勉強会なので、evil-mode について発表することにした ● Vim の話が多数スライドに登場するが、今回は内容が evil-mode なので仕様と なる ● 内容は Vim 使用者向けかもしれない ● VimVim勉強会以外では歌わないというポリシーがある勉強会以外では歌わないというポリシーがある ため、歌はないため、歌はない
  • 3.
    注意だ、フハハハ ● この発表では evil-mode使いが気分を悪くするかもしれない ● ただし、我はただし、我は evil-modeevil-mode の出来は良いと考えの出来は良いと考え ているている – evil-mode を超える Vim 風拡張は存在しない ● ここで議論するのは evil-mode の本質的な問題であり、evil- mode が誰もがインストールするべき万能の拡張機能ではない ということである ● 「なぜ暗黒美夢王が Vim 風拡張を使わないのか」と言い換え てしまっても良い
  • 4.
    ケーススタディ ● A「Vim でneo 系プラグインを設定するのにつかれた……。何 でこんなに設定する必要があるの」 ● B「A君、もうVim はオワコン、やはり時代は Emacs だよ。最近 の Emacs には evil-mode があって、Vim プラグインも動くん だ」 ● A「えっ、何それ初耳だよ。Emacs はすごいんだね。よし、Emacs + evil-mode に早速乗り換えよう!」 ● A「evil-mode のこの機能、Vim で見たことある!」
  • 5.
    その後の A 君 ●A「B 君、僕は Emacs + evil-mode でいつでも evil-mode の 設定をしているんだ。もうキミと遊んでいる時間はないよ」 ● B「なんていうことだ、A君。僕よりテキストエディタの方が大事 だなんて……」 ● こうして、A 君は Emacs + evil-mode に移行してテキストエ ディタとの幸せな日々を過ごしたのでした ● めでたし、めでたし……?
  • 6.
    ちょっと待った!! ● 本当にその選択は大丈夫なのか? ● evil-mode はVim plugin が動作するのか? ● Vim からの移行は楽なのか? ● 意外と知られていない evil-mode への移行のリスク ● evil-mode の利点と欠点を正しく理解するべきである
  • 7.
    Vim script が動作しない ●evil-mode では Vim script が動作しない ● Vim script や Vim plugin の互換性は 0 % ● 既存の Vim script を全て捨て、Emacs Lisp 資産に置き換える 必要がある ● 一部対応するプラグインはあるが、細かいところで挙動は違う ● 「evil-mode では Vim script や Vim プラグインが動く」という 嘘は言わないように!
  • 8.
    evil-mode は情報が少ない ● 使用している人が相対的に少数 ● 日本語の情報は更に少ない ● tarao氏のページは情報がまとまっていて極めて参考になる が、ちょっと古い http://d.hatena.ne.jp/tarao/20130303/evil_intro ● 困ったことがあっても、なかなか人に聞けない
  • 9.
    何かの拍子に Emacs が顔を出す ●evil-mode の wrap は完全ではない ● 既存のプラグインの操作体系は evil-mode を考慮していない ● 我慢するのか、自分で設定するのか
  • 10.
    試される Emacs Lisp力 ● evil-mode では Emacs Lisp を書かないという選択肢はない ● evil-mode 独自の概念はとても複雑 ● 設定が難しく、解説を読むだけでクラクラする http://d.hatena.ne.jp/tarao/20130304/evil_config ● Emacs Lisp を進んで書くような人は Emacs 界にも 50 人に 1人〜2人くらいしかいないのだが……
  • 11.
    多数の拡張機能のインストールが必要 ● evil-mode は機能が分割されている ● 各種プラグインを模倣した拡張機能達の例: evil-nerdcommenter,evil-rails, evil-little-words, ... ● Vim に近づけるためには、既存の Emacs 拡張機能のインス トールや設定を行う必要もある
  • 12.
    あなたに自由な時間はあるか? ● evil-mode の設定は時間がかかる ●Emacs の設定も同時に行う必要がある ● テキストエディタの「設定」は一朝一夕では無理 ● 「テキストエディタは道具」という軽い認識では困難がある ● 進学、就職、結婚、子供……それらの環境の変化があっても、テ キストエディタの設定を続けることはできるか? – テキストエディタと人生の両立 ● 我の人生はテキストエディタに捧げる……くらいの情熱が必要
  • 13.
    neovim という選択肢 ● neovimだと Vim plugin の互換性が 98% ● 既存の Vim の設定もほぼそのまま動く – このレベルになるとVim と互換性があるといえる – 既存の Vim に不満があり、Vim script 資産を捨てたくないならこちら ● 非同期通信、各種プログラミング言語で拡張可能、GUI クライアント、端 末機能の内蔵が特徴的 ● まだ理想には遠いが、現段階でも十分実用的 ● 理論上では Lisp で拡張を開発可能 – ベースとなる仕組みはある ● 一方の Guile Emacs は……(察し)
  • 14.
    evil-mode に向いている人 ● Emacsの設定に割く時間がある ● Emacs Lisp が大好き ● 困難を自分で解決できる能力がある ● Vim script が嫌いだ ● 足りないものは Emacs Lisp で作る ● メインの開発環境は Windows ではない。もしくは UNIX 環境 へのリモートログインである ● Emacs のコミュニティは俺が盛り上げる!
  • 15.
    evil-mode に向いていない人 ● 過去のVim script の資産が捨てられない ● Emacs の拡張機能は Vim の既存のプラグインと細かいところで 挙動が異なる ● Emacs Lisp を書きたくない ● 既に Vim script で多数のプラグインを作成している ● Vim のコミュニティが好きだ ● テキストエディタの起動時間を気にしてしまう ● 「実は…… Vim script を書くのが好きなんです」 ● Vim にパッチを書いている
  • 16.
    暗黒美夢王の場合…… ● 過去の Vimscript の資産が捨てられない(プラグイン含めて数万 行) ● Emacs の拡張機能は Vim の既存のプラグインと細かいところで 挙動が異なるので気に入らない ● Emacs Lisp を書きたくない ● 既に Vim script で多数のプラグインを作成している。再実装してら れない ● Vim のコミュニティが好きだ ● テキストエディタの起動時間を気にしてしまう ● Vim script を書くのが好き。なぜ Dis られるのか理解できない
  • 17.
    Emacs に移住する(した)者たちへ ● Vimmerとしては悲しいが、Vim に出来ないことがあるのは事 実なので、止めはしない ● どうせ Emacs に移住するのなら Emacs をサポートしてやって ほしい ● Emacs は誰かが新しい拡張機能を書かないと徐々に弱ってい く ● 未来の Emacs を支えるのは、あなた達なのだ
  • 18.
    終わりに ● 今回の解説でお分かりいただけだであろうか ● evil-mode はVim を模倣する拡張機能としては極めて優秀だ ● evil-mode と他の Vim 風拡張機能では雲泥の差がある ● しかし、 evil-mode では Vim script が動かないので Vim と互換 性があるとは認められない ● あなたに evil-mode を使う「覚悟」はあるか? ● それは漠然と Vim を使っていた時よりも困難な道程である ● 我は evil-mode が嫌いというより、Vim フォーラムでよく見る 「間違った evil-mode の宣伝」が嫌いなのかもしれない
  • 19.
    終わりに ● あなたは「VimをベースにしたEmacsが欲しいのか」 → neovim ●それとも「EmacsをベースにしたVimが欲しいのか」 → evil-mode ● 素の Emacs が最高なのか