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

Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Minoru Maeda
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメYoji Kanno
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろうShingo Omura
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji Kubota
 
deep dive distributed tracing
deep dive distributed tracingdeep dive distributed tracing
deep dive distributed tracingTakayoshi Tanaka
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメSatoshi Takami
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようShohei Okada
 
【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介
【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介
【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介株式会社クライム
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討Masahito Zembutsu
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことgree_tech
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングRansui Iso
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...whywaita
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
Uwpアプリケーション開発入門
Uwpアプリケーション開発入門Uwpアプリケーション開発入門
Uwpアプリケーション開発入門Makoto Nishimura
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Koichi Sakata
 

Mais procurados (20)

Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
deep dive distributed tracing
deep dive distributed tracingdeep dive distributed tracing
deep dive distributed tracing
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
 
【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介
【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介
【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Uwpアプリケーション開発入門
Uwpアプリケーション開発入門Uwpアプリケーション開発入門
Uwpアプリケーション開発入門
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
 

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