VimConf 2025 Small参加レポート
VimConf 2025 Small参加レポート
個人的にVimを使い始め、興味があったので参加してみました!
テキストエディタの話を普段からすることは中々ないので新鮮かつ
Vim=つよつよエンジニアで入りにくいイメージは一切なく、初心者でも入りやすい雰囲気でした!
メモと所感
nvim-cmp retrospective: Exploring Completion and Facing FOSS Challenges
OSSの中の人からOSSの経緯やモチベーションを伺うことができる貴重なセッションでした。
個人的にはヒューリスティックな実装例が興味深かったです。
内容メモ
nvim-compeがメンテナンス困難→nvim-cmp(補完エンジン)
一時期はデファクトスタンダードになったnvim-cmp(今は保守的な選択肢の一つ)
刺さった理由
- 外部依存がない&&LSP設定ができた
- カラフルな補完メニュー(当時なかった)
Editorの補完に対するスタンスの違いによって自作が必要なケースが多い
VSCodeとVimの違い:
- VSCode→リッチ
- Vim→カスタマイズ性(素朴)
- 補完候補をバッファのテキストに入れる(VSCodeでは入らないので便利)
- マクロとかリピートで使うから
- 補完候補をバッファのテキストに入れる(VSCodeでは入らないので便利)
Key Mapping大変
- LSPのcommitCharacters
- Enter他のプラグインでも設定されがち→ハックな実装したが、後で不要になること多い
FOSSチャレンジ
- ユーザと課題感が共有されていた
- パッション駆動
- ある時から乖離が発生した
- やりたいことがユーザの求めるものではない→安定を求められている
- →コミュニティ主導に変われば良いのではないか?
- マンパワーとモチベーションが問題なら
- 利用者が十分に増えた後に候補を入れるのはメンテ側からすると危険に感じる
- 燃え尽き症候群になってたから知識の委譲が無理そう
- サプライチェーン攻撃にも注意
- リリース後、ミラーリポジトリ(マルウェア仕込みあり)ができていた
Introducing the TabPanel Feature: Motivation and Implementation
VimにマージされたTabPanelの話です。Vimほどの大きなOSSでも個人でほしい機能でもマージされる点が印象的でした。
内容メモ
TabPanelとは
- Vim内蔵の機能、Vimの端に表示する
- 当時はTabSidebarという名称の候補もあった
モチベーション
- Vimに貢献してみたかった
- TabLineが微妙だった
- Vimプラグイン開発者からすると、ウィンドウの数や位置に注意しなくて良い情報表示をしたい
設計
- TabLineはデバッグ程度の立ち位置とする
- 改行の入った複数行を表示したい(TabLineとの差別化)
実装で困った点
- 最初は横に表示するだけでいけそうだと思っていたが...
- Vim8.4くらいのポップアップウィンドウをTabPanel上に表示できるようにしようとしてた→再実装
- TabPanelのインターフェースの途中変更が困難
- Vim8.2 補完の時にポップアップウィンドウ出るようになった
- Vim8.4くらいのポップアップウィンドウをTabPanel上に表示できるようにしようとしてた→再実装
- GUIのデバッグ難しかった
- スクロール・スワップ
後で直したい点あったら、、、
- 個人的にほしい機能を作ってマージまでされたが、愚直な実装で直したい時どうすれば、、?
Lowering the Vim Barrier: Building nvim Environment with AI Assistance
初心者向けにおすすめのプラグインやAIを使うことでよりVimへの参入障壁を下げられるといった内容でした。AI活用の良い例だと思いました。
内容メモ
初心者向け
- neo-tree
- lualine
- bufferline
- which-key
- alpha-nvim
- win-sep
以下、参考
Getting Started with your own Neovim feat. mini.nvim
mini.nvimを入れるだけでできることがたくさん増えるのでプラグインをカスタマイズ・調整に慣れてない内は良さそうです。慣れていたとしても便利な機能もあるので一部機能をオンにするだけでも良さそうです。
私は慣れてないので入れてみます。
And Yet, Vim Survived: Thinking and Seeing in the Age of Code You Don't Write
Vimの使い方で参考になる内容が多かったです。コードレビューの考え方も丁寧で参考になります。
内容メモ
Where, What, Why
Where
ファイルジャンプ:gf,gF
- F大文字だと行と列の正確な場所に飛ぶ
Jump Back & Forth
- <C-o>, <C-i>: カーソルポジションで前、後に移動
- BackAndForward.vim:Back, Forwardコマンドの提供
- 前のところに一発で戻れる
Search Jumps
- /{pattern}, ?{pattern}, n/N
- vim-fall: (fazzy-finderならなんでもOK)プレビューして飛び先を選んで、一発で飛べる(戻る時<C-o>に前のところにも一発)
- ファイル内、PJT内は同じインターフェースかつC-oの問題もあるので、おすすめ
What
Window management
- <C-w>s / <C-w> vで複数Window(:split, :vsplit)
- splitright, splitbelowを使って自然な分割ができる
- goyo.vim
- バッファにフォーカスできる
File Explorer→存在を知らないものを探す
Fazzy Finder→存在を知っているものを探す
Why
GinBlame
Assists text writing anywhere
OSとか大体日本語入力辛いですが、それをコーディング以外でも使ってみようという話です。ライブデモが楽しかったです。
内容メモ
Vim
- 行指高のエディタ
- コピペが容易い
- スクリプト/プラグインのプラットフォーム
- Vim Script
- Lua
- Vim9 Script
コードエディタ以外でも使ってみない?
- 入力飛ぶ
- 日本語だけOSのIMEが大体バグってる(IMEユーザが国際的にかなり少ないから)
skkって何?
- 単語ごとに変換モードに入って確定してから次を入力する
Designing Repeatable Edits: The Architecture of . in Vim
効率化のためにVimのDot Repeatを適切に活用しようという話です。仕様の解説がわかりやすく、勉強になりました。
内容メモ
編集速度を上げるためにDot Commandを理解する
最初に手間をかけて書けばリピートで効率化できる
目的
- 雰囲気Dot利用をやめる
- Dotフレンドリーに編集できるようになる
etc...
Dotの仕様と意識すべきこと
- 直前の編集を繰り返す
- ノーマルモードの「入力」を繰り返す(編集した内容の再実行)
繰り返し可能
- オペレータ+motion
- テキストオブジェクト
- normalのコマンド
NG
- Visualモード
- カーソルキーの使用
(チャンクを小さくするために)なるべく避ける
- Substituteコマンド→undoの粒度が大きくなってしまう
- 検索とDotに分割すると意味のあるチャンクに分解できる
- undojoinもまとまりが大きく繰り返しにくい
Register is more than clipboard
Vimのyankが従来のコピペとは違うことを仕様から理解できました。うまく使ったり、明示的に同期する方法を活用したりすればyankをもっと活用できそうだと思いました。(暗黙的にされると辛い派なので)
内容メモ
レジスタをうまく使うには?
レジスタの種類
"0:yank用。削除と変更では使えない
"1-9:削除履歴(1が最新)
"-:cw, dwとかでVisualモードで1行消す時、小削除
"_:ゼロレジスタ的なやつ。削除用。blank hole
"(unnamed):操作履歴
blankを使わない限り、無名レジスタに操作履歴が溜まり続ける
Tips
実際にyankするのは操作履歴になっているので、Lost yankになる
- "0P"で必ずペーストできる
- Blank Holeにリダイレクトして操作履歴を汚さない
名前付きレジスタを使うと、今日の日付とかのテンプレートをサクッと展開できる
Clipboardの流派
常にSync(標準)
明示的に同期
- よくあるMapping方式を使って、履歴を汚さない
- Blank Holeのbpを入れる
まずはregで確認する習慣をつける
Discussion