VimConf 2017 でトークしてきた

11/4 に開催された [VimConf 2017](http://vimconf.vim-jp.org/2017/) でトークショーに出演してきましたので、その報告です。

## トークショー予行演習(?)

昼休みは、トークショーの予行演習として(?)、koronさん、mattnさんとともに、壇上で衆人環視の中弁当を食べつつ、適当に質問に答えるという希有な体験をさせていただきましたｗ
弁当はかなり立派で、おいしかったです。

## トークショー

「Vim鼎談」という題で、koronさん、mattnさん、私の3人でトークショーを行いました。Vimを使い始めた契機や、どのように開発に関わってきたかなどいろいろ話しましたが、トークの内容は「[vimconf2017へ行ってきました](https://qiita.com/akif999/items/57e90c6dbb4c991a0046)」などを見ていただけるとなんとなく分かるかもしれません。

話した内容の補足をいくつか書いておこうと思います。

私がVimの開発に関わり始めた経緯についてですが、私の最初のvim-jpへの書き込みは「[less.sh/less.vimの動作をlessに近づける · Issue #191](https://github.com/vim-jp/issues/issues/191)」で、vim-jpが発足してから半年後のことでした。このときの修正はruntimeファイルに対する修正だったため、パッチ番号は割り振られていません。
Vim本体に対して、最初に投げたパッチは、Windowsでのsymlinkの挙動を修正する [7.3.1182](https://github.com/vim-jp/issues/issues/241) でした。他の人が作ったパッチを改良して取り込んでもらったことが何度もあるという話をしましたが、実はこのパッチもそうでした。ただ、このパッチは取り込まれるまで 10ヶ月も掛かったため、最初に取り込まれたのは他のパッチ([7.3.688](https://github.com/vim-jp/issues/issues/252))でした。

さて、私の最初のパッチが取り込まれてからしばらくした頃、VimConfの前身である [ujihisa.vim#3](http://vim-jp.org/ujihisa.vim-3/) が開催されたのですが、そのときの koronさんの発表資料 ([vim-jpの活動報告](http://koron.github.io/ujihisa-201211/)) を見ると、今と比べるとパッチの数がずいぶん少なく、隔世の感があります。Vimもvim-jpもかなり変わりました。

トークショーでも話したとおり、この5年でパッチを300個ほど取り込んでもらいましたが、実際にはそれだけでなく、パッチ番号が付かないドキュメントやruntimeファイルへの修正も多数送ってきました。また、ソースコード本体の修正ではなく、(mattnさんの指摘のように)テストや、ビルドシステム(configureやMakefileなど)に対する修正なども多数あります。Vimの開発に参加したいという方は、このようなところから関わってみるのもよいでしょう。
なお、開発者が少ないプラットフォームは穴場です。WindowsやCygwinなどはパッチのネタの宝庫と言えるかもしれません。

後は、話題に上ったパッチ等について、関連情報へのリンクを記載しておきます。

* Cygwinでクリップボードを使えるようにするパッチ: [7.3.836](https://github.com/vim/vim/commit/693e40c2cdb65f19febde5664633ac465931cc63) (他の人が作ったパッチを、最新版に合わせて修正。)
* 日本語をスペルチェックから除外するパッチ: [7.4.088](https://github.com/vim-jp/issues/issues/476)
* DirectWrite対応: [7.4.393](https://github.com/vim-jp/issues/issues/337)
* lambda対応: [7.4.2044 他多数](https://github.com/vim-jp/issues/issues/905)
* pythonx: [8.0.0251](https://github.com/vim-jp/issues/issues/858)
* 'makeencoding': [8.0.0427](https://github.com/vim-jp/issues/issues/9)
* Windows CUIで画面が正しく復帰されない問題の修正パッチ: [8.0.0905](https://github.com/vim-jp/issues/issues/785)
* Windowsのチャンネル速度の改善: [8.0.0925](https://github.com/vim/vim/commit/62426e168ef29fb941d1bd91a112fa09445322a5)
* 日本語入力の over-the-spot 対応: [8.0.1026](https://github.com/vim-jp/issues/issues/874)
* 日本語入力onがデフォルトとなっている問題の修正: [8.0.1114](https://github.com/vim-jp/issues/issues/1083)
* シンタックスハイライトが突然offになる問題の修正: [8.0.1133](https://github.com/vim-jp/issues/issues/1076)
* タブページのD&D対応パッチ: [8.0.1211](https://github.com/vim-jp/issues/issues/484) (取り込まれるまでに3年11ヶ月掛かった)
* Vim 8 / Neovim用の新しいプラグインマネージャー: [minpac](https://qiita.com/k-takata/items/36c240a23f88d699ce86)

一部のパッチは、私の[VimConf 2013の発表資料](https://www.slideshare.net/k-takata/how-to-write-patches-for-vim-28307604)でも紹介しています。

## 他の方の発表

一言感想です。

* haya14busaさん
  incsearch.vim の機能がついに本体に入って、よかったです。

* fatihさん
  まだvim-goは使ったことがありませんが、試してみたくなりました。

* cocoponさん
  カラースキームの作り方と、その際に有用なプラグイン、カラースキームの比較サイトの説明。
  デザインの知識がない私にとって、色を作るのにHSB(HSL)色空間を使うと直感的というのは非常にためになる情報でした。色弱者の話などを含め、カラースキームだけではなく、他にもいろいろ応用ができそうです。

* t9mdさん
  去年に引き続き、Atomのvim-mode-plusの話でした。Vim以上にVimな感じです。

* senopenさん
  POSIX原理主義に始まって、ポータブルな .vimrc を書く話でした。
  (最近は、新しいVimが使えないなら自分でコンパイルしよう、な私。)

* ShougoMatsuさん
  スニペットプラグインの話。
  スニペットプラグインを理解するために自分で作ったというエピソードが面白かったです。あと、deoplete.nvimのWindows開発者を募集中だそうです。(私は使っていないので、すみません。)

* dice\_zuさん
  どうやってパッチを書くか。情熱。毎日Vimをビルド。
  パッチを書ける人が続々と増えていて嬉しいです。

* pockeさん
  正規表現ベースではなく、言語自身のツール等を使って構文解析をした結果を使って、シンタックスハイライトを行う方法の提案。「正規表現は人類には早すぎる。」
  非常に大きいファイルに対しては速度的な問題があるようですが、将来的な発展の可能性を感じます。

* lambdalisueさん
  Git用のプラグイン、gina.vimの説明。
  UIがとてもよく考えられているなあという印象です。


## 懇親会

懇親会の食事もずいぶん豪華でした。去年と比べると倍以上したチケットですが、これと昼食だけで十分元が取れるとのこと。実際よかったです。
メルカリ様からは、EmacsとVimの缶バッジもいただきました。最初はEmacsだけもらったのですが、Vimが余ったということでVimももらいました。

さて、懇親会でいくつか質問があったので、紹介しておきます。

* `:map`等のコマンドの結果は、分量が多いとmore風のページャーで表示されるが、そこで`/`等で検索できるようにならないか？<br>
  便利かもしれないが難しそう。`:redir`でリダイレクトしてから検索するか、`:filter /Match/ map`するのが現実的な代替手段ではないか？<br><br>

* 大きい画面で使っていると、下に出てくるメッセージを見落としてしまう。特に検索でwrapしたときなど。メッセージをポップアップしたり、せめてメッセージ出力をフックできないか？<br>
  80x25等の画面サイズが標準だった頃の設計を引き継いでいるので、大きい画面ではそのような問題もあるかもしれない。
  その場ではよい対策案を思いつかなかったが、そのようなオートコマンドを用意するのはありかもしれない。<br><br>

* Vim の Git リポジトリには、Vim 7.0 以降のコミットしか残っていないが、それよりも古い履歴はないのか？ (senopenさん)<br>
  SourceForge に CVS リポジトリがある。Git 形式に変換して、GitHub 上で参照できるようになっていると便利かもしれないと思っているが、手を付けていない。
  <http://vim.cvs.sourceforge.net/viewvc/vim/vim/> に、5.5 辺りから 7.0 までの履歴がある。
  <http://ftp.vim.org/vim/old/> には、1.14 から 4.5 までのソースコードが tarball で公開されている。
  <http://ftp.vim.org/pub/vim/unix/> には、3.0 から 8.0 までのソースコードが tarball で公開されている。