Vimconf_2018
今年も行きました!VimConf! 去年も参加した身ですが、今年はなんと言ってもVimの父であるBramが来るということで、EarlyBirdチケットとって参加してきました!
のっけから名札の画像に頭を悩ませつつも、来年は予めJPEGで用意するなどの改善をしたいと思いました😇
(多分PNG-8で保存したのがいけないんや…)
わろた pic.twitter.com/NfFTH5p4vO
— かみけん (@kamykn) 2018年11月24日
↓↓ノベルティの様子
#saketoba #vimconf pic.twitter.com/XCTlmp1k7A
— かみけん (@kamykn) 2018年11月24日
VimConfは1日中やっていたこともあり、かなり内容が膨大なので私は下記の内容で今回は書き残します。
- Keynote - What is the next feature?
- Keynote - Vim: From hjkl to a platform for plugins
- その他個人的に思うハイライト
- 懇親会
Keynote - What is the next feature?
speaker: Yasuhiro Matsumoto (a.k.a. mattn) Captain of vim-jp
(この発表で個人的に良いと思ったVim-jpに関してをメインにまとめました。)
Mattn history
初めてのpatchは5.6.004で当時すでに、日本語の正規表現部分を作ってる人(KoRoNさん)がすでにいたそうです。
ここの部分で日本語の後読みは後ろから探さないから少し遅いなんてことをおっしゃってました。なるほど🤔
ちなみにVimのドキュメントに後読み先読みのパフォーマンスへの言及が多くてとても参考になりますm(_ _)m。
(https://vim-jp.org/vimdoc-ja/pattern.html)
Vim-jpの目的
- 知識の共有
- コミュニティのイベントをココから始めたらいい
というのをやりたかった。
vim-jpでやってること
英語の壁のサポート
- マルチバイトとかなかなか気づいてもらえない
- バグ報告をVim-jpに日本語でしていただければ
- patch代わりに書いたりしますし、そのままあなたが書いても良い
- code review
- patchの内容でなにを直したいのかをVim-jpで吸い上げてレビュー
- vim本体にintroduceしている
ドキュメントの翻訳
- 個人で勝手に書いてもいいけど、間違ったまま広まることも有る
- Vim-jpが正しく翻訳して品質を保証する
機能の追加
- 追加してきたもの
- lambda
- job/channel (NeoVimからの逆輸入)
- DirectX rendering
- patchがマージされるまで時間がかかると思ってたら3時間でマージされた
- incsearch
- :terminal
- 追加してきたもの
『ドキュメントの翻訳は個人で勝手に書いてもいいけど、間違ったまま誰も指摘せず広まることも有る』 確かに🤔 #vimconf
— かみけん (@kamykn) 2018年11月24日
誰がVimの次の機能を作るのか
Vim-jpは開発者集団だけど、Vim-jpが作っているわけではない。
(patch投げるときにサポートなどもしてるのでVim-jp以外の日本人も作っているという意味)
そういう意味で、次にどんな機能が入るかはVim-jpではなんとも言えない。
ただし、開発者集団なので、Vim-jpのメンバーも作ってpatch投げるよ!
Suggestion (パッチ書いたよ、採用されるかはわからないけどね)
というわけで、mattnからの機能の提案
- DRCS Sixel on :terminal
- ch_listen()
- BLOB type
Keynote - Vim: From hjkl to a platform for plugins
speaker: Bram
この発表ではVimの歴史を最近Bramが思っているプラットフォームとしてのVimという側面から振り返ってみる内容になっていました。
最近出版された本
- 最初は(昔)はVimの使い方だった
- 最近、どうやってプラグインを入れるかなどの本が出た
- プラットフォームとしてのVimの側面
最初のViの機能
できたこと
- .exrcファイル
- Undo 一回分
- .swp メモリが少なかったので必要だった
- recursive map マッピング
- Jump around with mark
Viで要求されなかったので、できないことは沢山あった。(たくさんのメモリを要求するので求められなかった)
Vim History
Autocommands
Added in Vim 4.0
ユーザーの任意の処理を狙ったタイミングで実行可能にするHooksの提供
例) :au BufRead
Autocommand(BufRead、BufWrite)がbufferに対して何でもできる問題が発生 - 解決できる方法の模索 - BufWrite時にbufferの中身を消すなどはできないようになど
Vim script
Vim 5.0から
Vim scriptはsyntax highlight
などでまず使われた。
と同時に.vimrcをコピーしなければいけない問題が発生。
plugin
Vim 6.0
正しいディレクトリにpluginを置けば動くように。
‘runtimepath’ optionの提供。
いくつかの機能がプラグインで提供されている。
Data types added
Pythonから影響を受けている
- Number
- Float
- String
- List
- Dict
- Funcref, pertial
- special
- job
- channel
(BLOBはいつ来るかわからないけどその正当性を考えてみたいとのこと)
Bram「エディターにFloatは要るのかと思ったが、要ると言う人がたくさんいた」
— かみけん (@kamykn) 2018年11月24日
😆 #vimconf
plugin performance
profile
: performance を 測りたいときにおすすめ
あと、vim --startuptime
プラグイン高速化
なんだけれども、では実際に改善をする場合には?という内容が続くBram氏 『プラグインをどう高速化するか?
— かみけん (@kamykn) 2018年11月24日
- Loading time
- Execution time
→ 高速なコンピュータを買えば解決!!!』😆 #vimconf
Autoload
などをまずは使って適宜ロードするようにするとLoading timeは改善される。
Vimの改善による高速化案
1. Improve parsing speed
- Multi-threadingで動かす
- 別のthreadで動かせばメインのスレッドには影響がない
別のネームスペースで動かして他のスレッドに影響しないようにしなければならない
→ いつの日かできるといいね
2. Vim script以外の別の言語が使える
- Python
- Perl
- Ruby, Tcl, Scheme
- Lua
『プラグインのスピード改善のために、他の言語を実行可能なようにサポートしてきたが、それは正しいhelpだったか? それならば私達はVim scriptを早くしたほうが良い。』 #vimconf
— かみけん (@kamykn) 2018年11月24日
Vim script コンパイル案が WIPらしい
自分が昨日お披露目したspelunker.vimもVim script 100%なので恩恵受けられたらいいな〜 https://t.co/DhxpR9YhGZ
— かみけん (@kamykn) 2018年11月24日
Plugin management
plugin dependencies
plugin は パーツとしてライブラリのように扱われることもあるので
それらを依存管理させたい?
実施案
dependencies.vim ファイルに依存を宣言させる
例)
let g:mypluginvimproc = PluginDepend('github', 'Shougo/viproc.vim')
自分のプラグインでは
call PluginLoad("~~~")
例えばV2やV3などの別名をつけることで、共通でなるべく使うようにしたい。
欲しい機能について投票を開催してみた
- 193票: popup window to show hints/message and pick an item
- 179票: Store propertise with text, used for highlighting et al.
- 96票: vim script 高速化
text properties
どういうアプローチか→
function foobar (hogeohge)
└statement └name └some properties
というようにプロパティをつけていく。ハイライトなどに適応できる(非同期でできたらいい)
やるにはかなりの機能が必要
Vimはlineを扱っていたけど、fileとして扱わなければいけない
(fileはGBのものもある)
popup window
このメッセージをこのポジションで見せたい
text propertiesと似たようなアプローチでできそう
質問
投票の中で大好きな機能は
- text properties
LSPについてどう思う
- Bram: ごめん聞いたことがない
- LSPはプラグインでサポートすべきなのか、本体でサポートすべきなのか教えてくれ!
Bramの発表について個人的なまとめ
今回の発表から、Plugin の PlatformとしてのVimという立場を認識させられました。
つまり、『みんなプラグインを作れ』というメッセージとして受け取って良いのかな?
その他個人的に思うハイライト
今年のPlatinum SponsorのatWareさんatWareさんのVimに対する想い #vimconf
— かみけん (@kamykn) 2018年11月24日
2件 = atWareのguyonさんとdaisuzuさん面接でVimのことを話して転職成功した例が、今日2件確認された #vimconf
— かみけん (@kamykn) 2018年11月24日
ujihisaさんの発表の中の「cの中をseeしたい」の同時通訳。翻訳 「cのなかになにがあるかみたいシー」
— かみけん (@kamykn) 2018年11月24日
素晴らしいww #vimconf
質問された方の内容もめっちゃ良かったvim.wasmの力でWeb上でプラグインのサンプルすごくいい #vimconf
— かみけん (@kamykn) 2018年11月24日
懇親会
懇親会ではいろいろな方とお話させていただきました。
中でも個人的に記憶に残っているのは…
Bramと写真撮った
写真はここには載せませんが、スゴイいい思い出になりました😆
私は英語がそんなに話せないですが、VimConfにようこそ!!って握手してくれました。
酔った勢いに任せてVimの作者のBramと写真撮ってもらって握手してもらったので非常に満足😊#vimconf
— かみけん (@kamykn) 2018年11月24日
韓国人の方と話した
懇親会でたまたま日本語喋れる韓国人の方と一緒に話したのでmattnさんは知ってた?って話したら「mattnは世界的に有名です」って言ってた😆#vimconf
— かみけん (@kamykn) 2018年11月24日
こちらも韓国人の有名なプログラマーといえば個人的にはFZFの作者のjunegunnさんですなぁというお話をしたのと、チャットアプリは日本で人気なのはLINEだけど韓国はKakaoTalkでしたっけ?みたいな話をしました。(その方はNAVER時代の子会社で働いていた事があるらしい。)
Bramとの写真は流れでこの韓国人の方と撮ったので、LINEで写真送りつけましたww(通常韓国の方はLINEはスマホに入れないけれども、NAVER関係でたまたま入れていたとのことww)
ほかにも
- いろいろとTwitterでよく見るアイコンの方と少しお話できてよかったです😆
- (直接はお話できませんでしたが) LTやってらっしゃったのでb4b4r07さんを初めて目撃した
- (zplugお世話になってます!)
それではまた来年
VimConfは個人的にもVimについて振り返るよいタイミングではありました。
今年自分、Vim活したっけ?あれ、去年のVimConf以降なにもしてない…ヤバイ。
みたいな一つの自分を奮い立たせるための口実にしていたりします。
そんなこんなで作ったのがspelunker.vimです。
https://github.com/kamykn/spelunker.vim
VimConfは自分のモチベーションの源です。
来年もVimConf楽しみにしています😆