vimconf 2018に参加した感想

vimconf2018に参加させていただきました。 私はVimの一ユーザーですが、Vimというオープンソースソフトウェアがコミュニティに支えられてここまで発展してきたということがすごく感じられる会でした。 盛りだくさんな内容でまだ消化しきれていませんが、私もコミュニティに貢献したい気持ちになりました。 まずは簡単なプラグインを作成してみることから始めてみようかなと思います。

各発表の感想

各発表スライドへはここから飛べます。

Keynote - What is the next future? by mattn

vim-jpはたまにvimについてググった時に見かける程度でvimの日本のユーザーコミュニティかと思っていたが、vim開発者のコミュニティであるとのこと。 英語が得意でない人のために日本語でdefectを報告する場所を作って、それらをvim本体に報告したり、ドキュメントの翻訳をしたりしている。 それに加えて、実際にパッチの実装やCode Reviewまでしているらしいです。

便利なPluginを紹介したりVimの便利な使い方をシェアするような場ではなくて、まさにVimの開発者のためのコミュニティなんだなあと思いました。 もし自分がバグ報告をしたくなったとして、実際にVim本体に報告する前にvim-jpに報告するほうが気楽そうだなと思いました。 この講演を聞くことでどのようにVimの開発が進んでいっているかが垣間見ることができました。

後半ではmattnさんが今取り組んでいるnew featureの話がありました。

  • vimでchannelをlistenする機能
  • BLOB型

などについてお話されていました。これができるとvim上でserverを起動できるようになったりするとのことです。 どれくらい有用なのか私にはわかりませんが、新しい型定義まで提案してしまうなんてすごい。

Keynote - Vim: From hjkl to platform of plugins

Vimを作った人、BramさんによるKeynoteVimの開発の歴史から今後の新機能の話までしてくださりました。 Vim5でvimscriptが導入されてから、いろいろな人が有用なscriptを書いたが、それを使う際にはコピーペーストするしかなかった。 Vim6, Vim7になってそれらのPlugin化、AutocmdによるLazy loadを可能にするような機能が追加されてきた。その結果、タイトルにあるようにVimはpluginのplatformへと発展していった、というような話でした。 今後の新機能はPlugin開発者が必要とするものを実装していくような流れにあるのかなという感じでした。

Bramさんはplugin開発者がどのような機能をVimに求めるかをアンケートをとっていて、 その結果票が集まったtext propertyというtextにmeta情報を付属して持たせる機能は実装を考えているようでした。 text propertyによって、XMLのような複雑な構造を持つファイルのsyntax highlightが改善することができると思うというようなことを言っていた気がします。 また票が最も多かったpopup機能もtext propertyを導入することで可能になる、と言っていました。

現状の課題としてはpluginのdependencyの問題を挙げていました。 plugin間でのライブラリの重複、複数pluginから使われているライブラリのバージョニングなどに問題があるというような話だったと思います。 dependencies.vimのようなファイルを各プラグインが定義してそこにdependencyを記録しておくことでvimdependencyをresolveできるようにする仕組みはどうかと考えている、というようなことを話されていました。

この話を聞いていると、タイトルの通り、Vimはテキストを編集するという目的の元に一つの大きなプラットフォームとなっていっているんだなと。 今後のVimの進化がとても楽しみになりました。

Migrating plugins to standard features

Pluginを100個以上入れていた発表者 (daisuzuさん) がpluginと同等なことをvimの標準的な機能で行うようにしていっているという話。 今回はShougoさんのplugins(neocomplete, unite.vim, vimfiler)でやっていたこともある程度は標準機能でカバーできるという内容でした。

Vim標準の補完機能が充実しているのに驚きました。私はまだまだ全然使いこなせていないなと思いました。Vim標準の補完機能については以下の記事にまとまっていました。

https://daisuzu.hatenablog.com/entry/2015/12/05/002129

辞書補完便利ですね。 set dictionary=/usr/share/dict/wordsで有効にしてみたら、deopleteでも補完してくれました。synonymを表示する機能なんてのもあるんですね。

Modes

Codeを読む際には特定の機能に注目して深ぼりしていくといい。 VimのMode切り替えに焦点を当ててVim本体のコードをVim上でdebug実行して深堀りしていく内容でした。

A day in the life of (ordinary) Vimmer

日常の仕事でのVimの使い方の紹介。

  • 毎朝Vimの最新の変更を取り入れる
  • ale
  • vim-testを使ってvim上でテストの実行と結果の確認
  • fzf.vimを使うとコードリーディングが捗る
    • Agを使うことで高速なgrepが行える

Effective Modern Vim scripting

VimのPluginの作成方法をHands-on的な感じで説明されていました。 発表を通して作成したamakeというpluginは公開されています。 https://github.com/lambdalisue/vim-amake

発表資料が公開されているので、参照しながら私もなぞってみようかと思っています。

Oni - The GUI-fication of Neovim

OniVimの紹介。NeoVimをwrapしてelectonで実装されたeditorのようです。 インストールしてみましたが、NeoVimのinit.vimをそのまま使えるのでいいかも結構いいかも。

Vim ported to WebAssembly

ブラウザ上で実行できる言語としてjavascriptに加えてWebAssemblyが出てきて、主要なブラウザではすでにサポートされている。 Cで書かれたVimのコードをWebAssemblyにコンパイルしてブラウザ上でVimを動かすことを目的としたvim.wasmというプロジェクトについて発表されていました。

まだvim-tinyの機能しかサポートしていないということですが、非常に可能性があるなあと思いました。 自分が作成したPluginを紹介する用途で使えかという質問が出ていました。確かにそれができると、個人のvimにそのpluginを入れずともブラウザ上で試せるので、素晴らしいですね。

Lighning Talks

A brief introduction to vim-orgmode

Vim上で動くタスク管理や議事録作成のためのツール?のvim-orgmodeを紹介されていました。 めっちゃ便利そう。試してみたい。

Neovim as a web browser controller

Neovimからブラウザを操作できるようにするすごいplugin ctlb.nvimの紹介。 Browser側にも拡張機能を追加することが必要なようですが、これはぜひ試してみようと思います。 Windowのフォーカスを一々変えなくて良くなると考えると捗りそうです。