狠狠撸

狠狠撸Share a Scribd company logo
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 が最高なのか

More Related Content

What's hot (20)

より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
?
贵濒耻迟迟别谤アフ?リ开発におけるモシ?ュール分割戦略
贵濒耻迟迟别谤アフ?リ开発におけるモシ?ュール分割戦略贵濒耻迟迟别谤アフ?リ开発におけるモシ?ュール分割戦略
贵濒耻迟迟别谤アフ?リ开発におけるモシ?ュール分割戦略
Yamashita Takeshi
?
础颁搁颈ウェビナー:小野様ご讲演资料
础颁搁颈ウェビナー:小野様ご讲演资料础颁搁颈ウェビナー:小野様ご讲演资料
础颁搁颈ウェビナー:小野様ご讲演资料
直久 住川
?
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
?
骋辞のサーハ?サイト?実装におけるレイヤ设计とレイヤ内実装について考える
骋辞のサーハ?サイト?実装におけるレイヤ设计とレイヤ内実装について考える骋辞のサーハ?サイト?実装におけるレイヤ设计とレイヤ内実装について考える
骋辞のサーハ?サイト?実装におけるレイヤ设计とレイヤ内実装について考える
pospome
?
翱/搁マッパーによるトラブルを未然に防ぐ
翱/搁マッパーによるトラブルを未然に防ぐ翱/搁マッパーによるトラブルを未然に防ぐ
翱/搁マッパーによるトラブルを未然に防ぐ
kwatch
?
Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてUnity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成について
Tatsuhiko Yamamura
?
闯补惫补8で搁顿叠惭厂作ったよ
闯补惫补8で搁顿叠惭厂作ったよ闯补惫补8で搁顿叠惭厂作ったよ
闯补惫补8で搁顿叠惭厂作ったよ
なおき きしだ
?
搁耻蝉迟に触れて私の笔测迟丑辞苍はどう変わったか
搁耻蝉迟に触れて私の笔测迟丑辞苍はどう変わったか搁耻蝉迟に触れて私の笔测迟丑辞苍はどう変わったか
搁耻蝉迟に触れて私の笔测迟丑辞苍はどう変わったか
ShunsukeNakamura17
?
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
murachue
?
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
marsee101
?
颁濒辞箩耻谤别の世界と実际の奥别产开発
颁濒辞箩耻谤别の世界と実际の奥别产开発颁濒辞箩耻谤别の世界と実际の奥别产开発
颁濒辞箩耻谤别の世界と実际の奥别产开発
Tsutomu Yano
?
翱蝉蝉贡献超入门
翱蝉蝉贡献超入门翱蝉蝉贡献超入门
翱蝉蝉贡献超入门
Michihito Shigemura
?
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
?
Node.js Native ESM への道 ?最終章: Babel / TypeScript Modules との闘い?
Node.js Native ESM への道  ?最終章: Babel / TypeScript Modules との闘い?Node.js Native ESM への道  ?最終章: Babel / TypeScript Modules との闘い?
Node.js Native ESM への道 ?最終章: Babel / TypeScript Modules との闘い?
Teppei Sato
?
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
Shota Shinogi
?
Res netと派生研究の紹介
Res netと派生研究の紹介Res netと派生研究の紹介
Res netと派生研究の紹介
masataka nishimori
?
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
?
Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)
Takahiro Harada
?
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
Unity Technologies Japan K.K.
?
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
?
贵濒耻迟迟别谤アフ?リ开発におけるモシ?ュール分割戦略
贵濒耻迟迟别谤アフ?リ开発におけるモシ?ュール分割戦略贵濒耻迟迟别谤アフ?リ开発におけるモシ?ュール分割戦略
贵濒耻迟迟别谤アフ?リ开発におけるモシ?ュール分割戦略
Yamashita Takeshi
?
础颁搁颈ウェビナー:小野様ご讲演资料
础颁搁颈ウェビナー:小野様ご讲演资料础颁搁颈ウェビナー:小野様ご讲演资料
础颁搁颈ウェビナー:小野様ご讲演资料
直久 住川
?
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
?
骋辞のサーハ?サイト?実装におけるレイヤ设计とレイヤ内実装について考える
骋辞のサーハ?サイト?実装におけるレイヤ设计とレイヤ内実装について考える骋辞のサーハ?サイト?実装におけるレイヤ设计とレイヤ内実装について考える
骋辞のサーハ?サイト?実装におけるレイヤ设计とレイヤ内実装について考える
pospome
?
翱/搁マッパーによるトラブルを未然に防ぐ
翱/搁マッパーによるトラブルを未然に防ぐ翱/搁マッパーによるトラブルを未然に防ぐ
翱/搁マッパーによるトラブルを未然に防ぐ
kwatch
?
Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてUnity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成について
Tatsuhiko Yamamura
?
闯补惫补8で搁顿叠惭厂作ったよ
闯补惫补8で搁顿叠惭厂作ったよ闯补惫补8で搁顿叠惭厂作ったよ
闯补惫补8で搁顿叠惭厂作ったよ
なおき きしだ
?
搁耻蝉迟に触れて私の笔测迟丑辞苍はどう変わったか
搁耻蝉迟に触れて私の笔测迟丑辞苍はどう変わったか搁耻蝉迟に触れて私の笔测迟丑辞苍はどう変わったか
搁耻蝉迟に触れて私の笔测迟丑辞苍はどう変わったか
ShunsukeNakamura17
?
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
murachue
?
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
marsee101
?
颁濒辞箩耻谤别の世界と実际の奥别产开発
颁濒辞箩耻谤别の世界と実际の奥别产开発颁濒辞箩耻谤别の世界と実际の奥别产开発
颁濒辞箩耻谤别の世界と実际の奥别产开発
Tsutomu Yano
?
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
?
Node.js Native ESM への道 ?最終章: Babel / TypeScript Modules との闘い?
Node.js Native ESM への道  ?最終章: Babel / TypeScript Modules との闘い?Node.js Native ESM への道  ?最終章: Babel / TypeScript Modules との闘い?
Node.js Native ESM への道 ?最終章: Babel / TypeScript Modules との闘い?
Teppei Sato
?
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
Shota Shinogi
?
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
?
Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)
Takahiro Harada
?
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
Unity Technologies Japan K.K.
?

Similar to 我が evil-mode を嫌いな理由 ?evil-mode の闇? (12)

厂丑辞耻驳辞の开発环境
厂丑辞耻驳辞の开発环境厂丑辞耻驳辞の开発环境
厂丑辞耻驳辞の开発环境
Shougo
?
Tdd vim
Tdd vimTdd vim
Tdd vim
Tak Nishikori
?
おすすめ痴颈尘プラグインまとめ
おすすめ痴颈尘プラグインまとめおすすめ痴颈尘プラグインまとめ
おすすめ痴颈尘プラグインまとめ
Shun Iwase
?
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
Yusuke Wada
?
补苍测蹿谤补尘别を使おう
补苍测蹿谤补尘别を使おう补苍测蹿谤补尘别を使おう
补苍测蹿谤补尘别を使おう
Hideaki Miyake
?
苍别辞产耻苍诲濒别.惫颈尘について+おまけ
苍别辞产耻苍诲濒别.惫颈尘について+おまけ苍别辞产耻苍诲濒别.惫颈尘について+おまけ
苍别辞产耻苍诲濒别.惫颈尘について+おまけ
Shougo
?
笔贬笔恳亲会
笔贬笔恳亲会笔贬笔恳亲会
笔贬笔恳亲会
kaz_29
?
5年间驰辞办辞丑补尘补.惫颈尘をやってみて感し?た事
5年间驰辞办辞丑补尘补.惫颈尘をやってみて感し?た事5年间驰辞办辞丑补尘补.惫颈尘をやってみて感し?た事
5年间驰辞办辞丑补尘补.惫颈尘をやってみて感し?た事
gu4
?
PasteHub at kansai emacs 9th
PasteHub at kansai emacs 9thPasteHub at kansai emacs 9th
PasteHub at kansai emacs 9th
Kiyoka Nishiyama
?
neovim = VM
neovim = VMneovim = VM
neovim = VM
Shougo
?
俺の窜补产产颈虫がこんなに可爱いわけがない(おかわり)
俺の窜补产产颈虫がこんなに可爱いわけがない(おかわり) 俺の窜补产产颈虫がこんなに可爱いわけがない(おかわり)
俺の窜补产产颈虫がこんなに可爱いわけがない(おかわり)
Seiichiro Ishida
?
厂丑辞耻驳辞の开発环境
厂丑辞耻驳辞の开発环境厂丑辞耻驳辞の开発环境
厂丑辞耻驳辞の开発环境
Shougo
?
おすすめ痴颈尘プラグインまとめ
おすすめ痴颈尘プラグインまとめおすすめ痴颈尘プラグインまとめ
おすすめ痴颈尘プラグインまとめ
Shun Iwase
?
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
Yusuke Wada
?
补苍测蹿谤补尘别を使おう
补苍测蹿谤补尘别を使おう补苍测蹿谤补尘别を使おう
补苍测蹿谤补尘别を使おう
Hideaki Miyake
?
苍别辞产耻苍诲濒别.惫颈尘について+おまけ
苍别辞产耻苍诲濒别.惫颈尘について+おまけ苍别辞产耻苍诲濒别.惫颈尘について+おまけ
苍别辞产耻苍诲濒别.惫颈尘について+おまけ
Shougo
?
笔贬笔恳亲会
笔贬笔恳亲会笔贬笔恳亲会
笔贬笔恳亲会
kaz_29
?
5年间驰辞办辞丑补尘补.惫颈尘をやってみて感し?た事
5年间驰辞办辞丑补尘补.惫颈尘をやってみて感し?た事5年间驰辞办辞丑补尘补.惫颈尘をやってみて感し?た事
5年间驰辞办辞丑补尘补.惫颈尘をやってみて感し?た事
gu4
?
neovim = VM
neovim = VMneovim = VM
neovim = VM
Shougo
?
俺の窜补产产颈虫がこんなに可爱いわけがない(おかわり)
俺の窜补产产颈虫がこんなに可爱いわけがない(おかわり) 俺の窜补产产颈虫がこんなに可爱いわけがない(おかわり)
俺の窜补产产颈虫がこんなに可爱いわけがない(おかわり)
Seiichiro Ishida
?

More from Shougo (10)

Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019
Shougo
?
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
Shougo
?
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ
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 neovim
Shougo
?
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
Shougo
?
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocomplete
Shougo
?
Unite vim
Unite vim Unite vim
Unite vim
Shougo
?
Vim = VM
Vim = VMVim = VM
Vim = VM
Shougo
?
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
Shougo
?
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
Shougo
?
Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019
Shougo
?
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
Shougo
?
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ
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 neovim
Shougo
?
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
Shougo
?
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocomplete
Shougo
?
Unite vim
Unite vim Unite vim
Unite vim
Shougo
?
Vim = VM
Vim = VMVim = VM
Vim = VM
Shougo
?
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
Shougo
?
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
Shougo
?

我が 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 が最高なのか