VimConf2024 参加記

Table of Contents

はじめに

2024-11-23 Satに行われたvimconf 2024に参加しました。

https://vimconf.org/2024/

登壇感想

英語の登壇であること、前日はしゃいで睡眠不足あったので聞き逃した所もあるが登壇メモを書いておく。

https://vimconf.org/2024/sessions/

Keynote - The new Vim project - What has changed after Bram by Christian Brabandt

一言

vim projectを引き継ぐにあたって大変なことについて。 vim本体のコードの引き継ぎも大変だけど、それ以外の引き継ぎも大変だったという話。

内容メモ

  • Bramが超人すぎて引き継ぎ量が多い
  • git repoの引き継ぎ
    • 権限周りや新しいメンテナの招待
  • vim.org のホームページ引き継ぎ
    • php5/7とか古いバージョン
    • DBやらドメインやら
  • Emailアカウント周り
  • Google Groupを使ってる
    • 正直イマイチなのでどうしたものか
  • セキュリティレポート
    • Huntr
    • GitHub security advisory
    • private mailing list
  • ICCF
    • まだ動いてるし、変えずにやっていく
    • voting feature は廃止
  • 開発進捗
    • Development did not stop
    • Vim9 classサポート
    • XDGサポート/Editorconfigサポート/Waylandサポート
    • BC Breakが起きないように十分にテストをする
  • コミュニティにとって何が重要か
    • e.g. IDEっぽいことができた方が良いか、エディタのままでいいか
    • e.g. Vim9は楽しいかどうか等
  • 開発者に求めてること
    • 安全なC関数を使う
    • CIを通してカバレッジの確認をするなど
    • 管理しやすいようにリファクタリングをする
  • 何を改善すべきか
    • GUI(GTK4)などのサポートを向上させるかどうか
    • Tree-sitterサポートするかどうか
  • 結論
    • Vimメンテナンスは大変
    • コミュニティを健全性を維持したい
  • 質疑応答
    • NeovimとVimは相互に協力して開発を進めていきたい
    • Vimにコントリビューションを始める方法を教えてほしい
      • ドキュメントなど全ての貢献に感謝してる
      • Vim scriptのC言語を読めば良い
    • 貴方が独裁者になってない?
      • 自分が休暇中は他の人がmerge作業をしてる
      • コミュニティの意向を尊重してmergeしてる
    • 言語の壁でも越えるのが大変だけどどうしてる?
      • 英語でコミュニケーションしかできない
      • メンテナは各国にいるので英語がコミュニケーションの言語になってる
    • 初心者に対してどういうことを期待してる?
      • まず日本のコミュニティに繋がることから始めると良い
      • 他の人から学ぶ、バグレポートから始めたり、ソースコードをチェックしてどう変更されたのか確認する、テストをする
      • ソースコードに馴染んできた時にパッチを送ると良い

Keynote - (Neo)Vim Made Me a Better Software Developer by TJ DeVries

一言

Neovimの話というよりは仕事のやり方に通じるものだった。 youtuberっぽい警戒なトークで面白すぎた。

内容メモ

  • 自己紹介
    • neovimとtelescopeのcontributor
  • より良いソフトウェア開発者の定義
    • 指標がむずかしい
      • お金とかでは測れない
    • Leetcodeがうまいとかではない
    • 一緒に開発してる人が喜んでくれるかどうか、作ったものを楽しんで使ってくれるかどうか
  • Goal
    • vimとinteractionをとる方法
    • vimがなんでワクワクするか、他の人にどう伝えるか
  • No, Please No.
    • It’s written in C, so it must be fast!
    • HA! YOU USE A BROWSER TO EDIT TEXT!!
    • Only noobs use VS C*de
    • It looks cool in the coffee shop/interviews
  • Yes, But No.
    • Better than “C IS FAST!!”
    • テキスト編集
      • neovimの方が早いだとかどういうことは言わない
    • Plugins
      • 問題解決にならなければ意味がない
  • Yes, But (Just Barely) No
    • OSSは優れているが、全てを再現するのが難しい
    • Joy
      • プログラミングはキャリアの中でやってる
        • マラソンに参加してるようなもの
      • Neovimを使って色々なことを改善できる
        • 1%の改善でも長くやってれば大きな差になる
      • Personalized Development Enviroment(PDE)
  • Yes
    • Epicが最初のキャリア
      • Fortniteではなく、医療系システム
      • Life always has tradeodff
      • やる気がとても大事なので自分ごとにして取り組む
        • 自分のためのものを作る、なにがほしいのかがわかるというのは素晴らしいことである
        • 自分が使って「気持ち悪い」という感覚をもつ
        • 本番環境 = 自分のマシン
      • 練習が大事
  • Prictice
    • ビジョンを明確にする
    • デバッグをうまくやる
    • シンプルさを保つ
    • 他の人と強調する
    • コミュニケーションする
    • iterationスピードを上げる
  • Confession
    • playgroundを作る
    • Neovimのだけじゃなくてとにかく試す機会を増やす
  • Make it * vim

Mastering Quickfix by daisuzu

一言

QuickfixはEmacsで言うところのembarkのような機能らしい。

内容メモ

  • Quickfixについて解説
    • Basic Operation
      • List Creation
      • Managing quickfix window
      • Jumping
    • History Listについて
    • Customizing Quickfixについて
      • grep programを指定できる
    • Batch Operation
      • :cdo , :cfdo がある
    • Saving and loading quickfix lsits
    • Automating with macros
    • Real-World Example
      • 「エディタの達人」の時便利らしい
    • THe Essence of Vim Mastery
      • Vimの語彙を増やしてMasterしよう

Hacking Vim script by kato

一言

Vimに関数を生やす話。php-srcと似てたので理解しやすかった。

内容メモ

  • Vimのソースコードを手元に落とす
  • ctagsでタグを作る
    • これで定義ジャンプできるようになる
  • 関数実装
    • C言語で関数を実装する
    • 関数の定義をglobal_functionsに定義する
      • 辞書順にsortされた所に入れる
      • 入力補完には出てくるのに実行時に解決できないことがある
    • f_debug() を実装してみる
      • src/evalfunc.c
      • f_max_argcf_argccheck などの説明など
  • デバッガ
    • gdbを使えるし、termdebugがある
    • git blame 便利
  • 実行までの流れ
    • ASTを作って式の評価など
    • GCの話
  • Vim9 Scriptについて
    • stack machineにコンパイルされる
    • stack machine VM説明

Switch between projects like a Ninja by Yuki Ito

資料

https://docs.google.com/presentation/d/15QvYTshQ7n7S4MbQUSUN7aHB_d4P1hLlO9E-1-GVC6Y/edit?usp=sharing

一言

私はEmacsだと projectile を使ってる

内容メモ

  • プロジェクトの切り替えについて
    • インフラプロジェクトとアプリケーションプロジェクトの切り替えをどうする?
      • sessionの管理どうしよう
  • Vim SessionについてDeepDive
    • vimにも mksession がある
    • sessionの実装について
  • Advancedな使い方について
    • shada

Vim meets Local LLM: Edit Text beyond the Speed of Thought by yuys13

一言

ellamaを使ってる身としては興味深かった。Emacsの小ネタも入れてくれて嬉しい。

内容メモ

  • LLMでコードを生成する話
  • 何故Local LLMなのか
    • 仕事でAIにコードを送るのがダメになりがち
    • Local LLMだと利用用途が広がる
  • Ollama導入
    • $ ollama pull tinyllama
    • curlで叩く実例
  • 仕組み解説
    • FIM(Fill in the Middle)
    • FIMのAPI経由で検証
  • Vimとの繋ぎ込み
    • Plugin実装の話
  • 将来性
    • プロジェクト内のコードを使って生成する
    • UI体験を考える

Creating the Vim Version of VSCode Dev Container Extension: Why and How by mikoto2000

一言

devContainer使ったことがなかったのでかなりイメージがついて良かった。

内容メモ

  • VSCodeのdevContainerについて
    • VSCode Server解説
      • devcontainers/cli
  • devcontainer.vim解説
  • 弱点
    • yank問題など
      • clipboard data receiverを作ってTCPでやりとりする
  • まとめ
    • vim integrationツールを作れる

Neovim for Frontend Developers: Boosting Productivity and Creativity by ryoppippi

一言

トークがうますぎる。お前がナンバーワンや!!!

内容メモ

  • エディタ遍歴
    • VSCodeのVim Pluginから始めてNeovim
  • VSCodeについて
    • 世界一人気だけど設定できない
  • Neovimの良い所
    • hackable
  • モダンwebフロントエンドのNeovim
    • 色々な言語やツールがあって大変
  • ライブコーディング
    • vim pluginの紹介など
    • コーディング
    • テストインテグレーション
    • ファイル管理
  • 結論
    • Neovim使おう

Building Neovim Plugins: A Journey from Novice to Pro by 2KAbhishek

一言

Tips for Plugin Authors すごい良い話をしてた。

内容メモ

  • Neovim遍歴
    • 色々pluginを作ってきた話
  • 何故Pluginを開発するのか
    • Boost Productivity
    • Make Your Own Tools
    • Enhance Integration
    • Empower the Community
  • Plugin開発周りの話
    • helpやcommentをちゃんと書く
    • Advanced Plugin
      • Async API
      • Integration tools(e.g. docker)
      • robust UI
      • tree-sitter/lsp
    • Tips for Plugin Authors
      • 自分が0番目のユーザ、ドキュメント化する、自動テストをする、パフォーマンスに気をつける、ユーザ設定を尊重する、シェアしてケアする

Can’t Help Falling in Vim ~ Wise men say only fools reinvent the wheel, but I can’t help building yet another fuzzy finder: Fall by Λlisue

一言

またFuzzy Finderか!!!

内容メモ

  • Fuzzy Finderとは
    • FuzzyにFindするもの
  • Fuzzy Finder/Tree Viewerの違い
    • Fuzzy finder
      • fast filering
      • partial knowlegdge
    • tree viewer
      • quick
  • Fuzzy finder歴史
    • 2007年 FuzzyFinder star: 257
    • 2010年 unite.vim star: 2900
    • 2011年 ctrlp.vim star: 2011
    • 2015年: fzf.vim star: 9600
    • 2016年: denite.nvim start: 2100
    • 2018年: fzf-preview.vim star: 909
    • 2020年: telescope.nvim star: 15500
    • 2021年: ddu.vim star: 292
    • 2024年: Fall star: 30
  • Fall Main Feature
    • Vim/Neovimサポート
    • 本当に必要なものだけに注力
    • プログラマフレンドリー
  • Vim/Neovimサポート
    • 両方サポートしてるPlugin少ない
    • Floating UIサポート
    • denops使ってる
  • 本当に必要なものだけに注力
    • modeless UI
    • 「忘れるべくして生まれてきた」
    • Switch behaviors
      • シームレスに切り替えることができる
    • submatch to refine
    • Latency over throughput
  • プログラマフレンドリー
    • TypeScriptで記述できる
    • extension開発ができる
    • TS moduleとして配布できる
  • 結論
    • Fall is venry

The latest dark deno powered plugins by Shougo Matsushita

一言

テキストエディタ、つまりこの世の全てが話されていた。

内容メモ

「VimはOS/シェル/ターミナルである」「VimはEmacs(のようなアプリケーションプラットフォーム)である」「Vimは全てである」

LT感想

疲れてきてメモ量が少なくなってしまった。

https://vimconf.org/2024/sessions/#menu-lightning

.vimrc and my belief about it by omochice

  • vimは趣味から仕事のツールに変化した
    • vimと外部APIとの繋ぎ込みを考えることが増えた
    • 他の人のvimrcを読む機会が増えた
  • 変わらなかったこと
    • 自分の思考を妨げない、最新のものを使う、明示的に書く

Plugin dependecny management wih nix by kuuote

Develop iOS apps with Neovim by uhooi

  • DAPの説明
  • neovim pluginは以下をメインで使ってる
    • xcodebuild.nvim
    • nvim-dap, nvim-dap-ui

Future-Proof Your Vim plugins: Strategies for Robust Testing

  • テスト書いてると色々支障が出る、vimでも同じ
  • テストフレームワーク選定
    • shellから叩けるか
    • 環境依存を減らしたい
    • 依存プラグインも入れられる
  • thinca/vim-themis を使うと良い

Tips for natvigating and Exploring Vim’s Help by Satoru Kitaguchi

  • vim helpの話
    • 色々なhelpの引き方がある

交流など

前日は秋葉原周辺でvimmer達と8人一緒に泊まり、朝一で向かいました。

昼飯は今半のすき焼弁当で余ってたので2つ食べました。

また、tadsanとvim-jpラジオの写真を取りました。

懇親会ではvim-jpの人達と交流できたので大満足でした。

特にShougoさんとテキストエディタの思想について交流できたのは個人的には大きかったです。 タイル型VMを使う理由、OSに対しての感覚、AstroNvimのようなフルスクラッチなnvimについての感覚などかねてから聞きたかったことが聞けました。 また、Shougoさんにはかねてからライブコーディングをしてもらいたいとお願いしてた夢が叶いました。

また、Emacsの話をいっぱい出来ました。 ゴリラvimと東京Emacs勉強会コラボとNix Meetupコラボしましょうという話もしました。

終わりに

本当に充実したVimConfだった。最高だった。