SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
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 が最高なのか

Mais conteúdo relacionado

Mais procurados

Multibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことMultibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことRecruit Lifestyle Co., Ltd.
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconDeNA
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るUnity Technologies Japan K.K.
 
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようEdomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようSatoshi Mimura
 
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSALVisual C++コード分析を支えるSAL
Visual C++コード分析を支えるSALegtra
 
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpテストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpkyon mm
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すTakaya Saeki
 
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介Drecom Co., Ltd.
 
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!Mr. Vengineer
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいwata2ki
 
Unicode文字列処理
Unicode文字列処理Unicode文字列処理
Unicode文字列処理信之 岩永
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!com044
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタl_b__
 
545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!Masayuki Kobayashi
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~モノビット エンジン
 
標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのかabend_cve_9999_0001
 
Java でつくる 低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧Java でつくる低レイテンシ実装の技巧
Java でつくる 低レイテンシ実装の技巧 Ryosuke Yamazaki
 

Mais procurados (20)

Multibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことMultibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだこと
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
 
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようEdomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみよう
 
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSALVisual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
 
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpテストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
 
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
 
Map
MapMap
Map
 
Unicode文字列処理
Unicode文字列処理Unicode文字列処理
Unicode文字列処理
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
 
545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
 
Riderはいいぞ!
Riderはいいぞ!Riderはいいぞ!
Riderはいいぞ!
 
標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか
 
Java でつくる 低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧Java でつくる低レイテンシ実装の技巧
Java でつくる 低レイテンシ実装の技巧
 

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

とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方Yusuke Wada
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけShougo
 
PHP懇親会
PHP懇親会PHP懇親会
PHP懇親会kaz_29
 
5年間Yokohama.vimをやってみて感じた事
5年間Yokohama.vimをやってみて感じた事5年間Yokohama.vimをやってみて感じた事
5年間Yokohama.vimをやってみて感じた事gu4
 
PasteHub at kansai emacs 9th
PasteHub at kansai emacs 9thPasteHub at kansai emacs 9th
PasteHub at kansai emacs 9thKiyoka Nishiyama
 
neovim = VM
neovim = VMneovim = VM
neovim = VMShougo
 
俺のZabbixがこんなに可愛いわけがない(おかわり)
俺のZabbixがこんなに可愛いわけがない(おかわり) 俺のZabbixがこんなに可愛いわけがない(おかわり)
俺のZabbixがこんなに可愛いわけがない(おかわり) Seiichiro Ishida
 

Semelhante a 我が evil-mode を嫌いな理由 〜evil-mode の闇〜 (10)

Tdd vim
Tdd vimTdd vim
Tdd vim
 
rucs_vim LT
rucs_vim LTrucs_vim LT
rucs_vim LT
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
anyframeを使おう
anyframeを使おうanyframeを使おう
anyframeを使おう
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
 
PHP懇親会
PHP懇親会PHP懇親会
PHP懇親会
 
5年間Yokohama.vimをやってみて感じた事
5年間Yokohama.vimをやってみて感じた事5年間Yokohama.vimをやってみて感じた事
5年間Yokohama.vimをやってみて感じた事
 
PasteHub at kansai emacs 9th
PasteHub at kansai emacs 9thPasteHub at kansai emacs 9th
PasteHub at kansai emacs 9th
 
neovim = VM
neovim = VMneovim = VM
neovim = VM
 
俺のZabbixがこんなに可愛いわけがない(おかわり)
俺のZabbixがこんなに可愛いわけがない(おかわり) 俺のZabbixがこんなに可愛いわけがない(おかわり)
俺のZabbixがこんなに可愛いわけがない(おかわり)
 

Mais 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
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocompleteShougo
 
Vim = VM
Vim = VMVim = VM
Vim = VMShougo
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environmentShougo
 
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
 

Mais 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
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocomplete
 
Vim = VM
Vim = VMVim = VM
Vim = VM
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
 
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
 

我が 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. 暗黒美夢王の場合…… ● 過去の Vim script の資産が捨てられない(プラグイン含めて数万 行) ● 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 が最高なのか