Meguro.vim #22 を開催しました

Meguro.vim #22 を開催しました。

開催したと言っても、会場周りのことは shivashin495 さんがだいたいやってくれるので私は「やるぞ」って言うだけの係です。ありがたいことです。

最近なかなかブログの記事を書けていないのでこういうのでかさ増ししていきたいと思います。

当日の様子

ランチに LAND のカレーを食べました。久々に食べました。やはりうまい。

LAND のカレー

本編では主催の 2 人を合わせると 13 人が集まりました。前回から引き続き参加してくれた方がいたり、一方で当日の午前 4 時に初参加の登録をして来てくれた人もいたりしました。わいわい。

私は thinca/action-setup-vim が未だに Node 16 だったのを Node 20 に更新してついでにアレコレする、と言うタスクを完遂しました。ついでにアレコレの部分の方が時間がかかりました。

他にも私の周囲で Vim 駅伝 に関する改善が次々と投げ込まれていました。

会場に色々とボードゲームやポーカーの道具が置かれていたりしてわいわい盛り上がったり、様々な質問が飛び交ったり、各々もくもくと作業する時間もあったりで良い感じでした。

次回

次回は 5 月の予定です。会場の都合もあるのでまだ確定ではないですが、5/11 か 5/25 辺りにできたらと考えています。次回もよろしくお願いします。

Sapporo.vim もくもく会 (2024/02)に参加した

Sapporo.vim もくもく会 (2024/02) に参加しました!

最後に訪れたのは 2014 年の 5 月ということで、だいたい 10 年ぶりになります。 会場は今回も株式会社インフィニットループさんの会議室ですが、前回訪れたあとの翌年に移転しており、前回とは違う場所でした(前回の場所がもう思い出せない…w)。

イベント自体は 11 時からでしたが、私は飛行機の関係で 13 時頃に到着。そのままお昼ごはんを食べました。お昼は中華料理屋へ。おいしかったです。ヒンナ。

油淋鶏定食

本編では、特にやることを考えていなかったのですが、action-setup-vimNode 16 は古いぜって Issue が立っていたのを思い出し、報告に感謝しつつ更新する作業をしていました。 更新自体は数字を増やすだけなのですぐ終わったのですが、これは互換性がなくなる変更であるためメジャーバージョンアップが必要です。

ついでだし、今 Webpack を使っているけどなんか最近のイケてる速いのに変えてみようかな、と色気を出したのが運の尽き。 ろくに調べもせず「Vite がよさそう」と思い導入を試みてみたのですが、どうもこいつは標準だと Web アプリを想定しているらしく、GitHub Actions に適用するのはそう簡単そうではありませんでした。さすがにできないということはないとは思っているんですが、健闘もむなしく時間切れとなりました。無念…。

こいつは時間がかかりそうなので Node の更新はひとまずサクッと出したほうがよさそうです。後日時間に余裕ができたらやろうと思います。

他の参加メンバーは vim-jp ではおなじみの方から、vim-jp 外からの初めましての方までおり、層が広くて素晴らしいな、と感じました。 みんな様々な進捗を出しており、私ももうちょい成果を意識して作業すればよかったな、と反省しきりです。ついでとか言ってる場合ではない。

終了後は有志でぞろぞろと晩ごはんを食べました。札幌と言えばスープカレー。こちらもまたとてもおいしかったです。ヒンナヒンナ。

スープカレー 手ごねハンバーグ

というわけで 10 年ぶりの Sapporo.vim でした。お腹いっぱいです。割と無理を言って開催してくれた raa0121 さん、参加してくれた皆さん、ありがとうございました! とてもいい催しなので、私がいなくても継続的に開催されると嬉しいですね。

約 4 年ぶりに Meguro.vim を開催しました

表題の通り、2024 年 1 月 27 日に Meguro.vim #21 を開催しました。 最後の開催が 2020 年 2 月 8 日だったので、実にほぼ 4 年ぶりになります。

経緯

2020 年 2 月と言えば、Covid-19 が流行り始めた時期です。オフラインのイベントはお預けになり、そのまま私は転職となりました。 Meguro.vim は私が勤めていたオフィスのスペースを借りて開催していたので、そのまま開催ができなくなっていました。

しかし今回ありがたいことに、現職の @shivashin495 さんとコンタクトを取ることができ、同じ会場で Meguro.vim を再開できる運びとなりました。めでたい。ありがとうございます!

当日の様子

イベント本編ではないですが、開始前に参加者のうち数名でランチに。3 人でカレーを食べました。目黒のカレーはうまい。

本編ではみんなもくもくと作業をしつつ、ちょくちょく相談や雑談が飛び交ったりしていて終始にぎやかでした。

私はというと、以前自分の設定ファイルに Vim script の string interpolation を正しくシンタックスハイライトするような設定を書いていたので、これをブラッシュアップして Vim のリポジトリに Pull Requestを出しました。 あとは人の作業に首を突っ込みにいったり、Vim9 script の怪しい挙動の調査をしたりしていました。Vim 本体のコードが難解すぎてうまく解明できず…。

終了後は参加者のうち 5 人で晩ごはんを食べるなどしました。目黒の街をさまよい、最終的にはテーブル席もあるラーメン屋さんでラーメンや混ぜそばなどを堪能しました。

今後について

今回久しぶりに開催できてとてもよかったので、今後も継続的に開催していきたい所存です。以前は 2 ヶ月に 1 度やっていたので、まだ確定ではないですが次回は 3 月に開催したいと思っています。

ちなみに会場は以前までと場所は同じなのですが、大幅に改装されて雰囲気がガラッと変わっているので久しぶりの方もぜひご参加ください。ちなみに土禁ではなくなりました。

最後に、会場の貸出と管理をしてくれた @shivashin495 さん、参加してくれた皆さん、ありがとうございました!次回以降もよろしくお願いします!

VimConf 2023 Tiny を振り返る

先週の 2023 年 11 月 18 日、VimConf 2023 Tiny が開催されました。

開催からもう一週間も裁っていまいました。筆が遅い…。

久々の VimConf

VimConf は 2013 年から毎年 11 月に開催されていましたが、2020 年から 2022 年の 3 年間、COVID-19 の影響で休止していました。

そして今年、ついに復活を果たすことができました。ブランクもあり、また COVID-19 の影響が完全になくなったというわけでもないため、規模を縮小しての復活になります。

普段なかなか顔を合わせる機会がない面々と久しぶりに会えたことや、この 3 年で vim-jp 界隈に現れて今回初めて会えた方々もおり、大変嬉しいです。

VimConf と私との関わり

私は例年 VimConf にはスタッフとして関わらせてもらっています。今回も例に漏れずスタッフをやらせて頂きました。

今回は縮小開催だったこともあり、スタッフの仕事はそれほど多くなく、改めて振り返ると私がやってたのは懸念事項を洗い出したり関係者各位にリマインドを行ったり、くらいしかやってないような気がしてきました。

当日は受付でチケットの QR コードを読み込んだり、参加者と雑談したり、発表を最後部席から見守ったり、参加者と雑談したり、懇親会の会場の準備を見守ったり、参加者と雑談したりしていました。雑談楽しい。

今は参加レポートの記事がたくさん上がってきていて、見つけられた限りでは全て読ませて頂いています。やはり反響があるのは嬉しいです。

反省会

振り返りということで少し一人反省会をしてみます。

名札はやっぱりほしい

今回は労力を最小にするために名札の制作をカットしました。この判断は間違ってはいなかったと思いますが、それでもやはり名札はほしいな、と思いました。

休憩時間や懇親会で、「あのアイコン見覚えがある!」となるのとそうでないのとではやはり話しかけやすさが変わってきます。

もうちょっと仕事できた気がする

結構な部分を他のメンバーにやってもらってしまった結果、私自身はなんかほぼなんもしてないくらいの勢いでなんもしてなかった気がしてきています。 他のメンバーがやってくれていた仕事のうちいくつかは引き取れたんじゃないかと今になって思ったりしています。

受付の構築で少しもたついてしまった

現場で即座にビシッと決めるのが苦手なのもあり、受付での列形成をどうしようか、迷ってしまって決められずもたついてしまっていました。

開場前に入口で不安になられた方がいたら申し訳なかったです。

実は 10 周年

ところでお気付きでしょうか。最初の VimConf は 2013 年でした。 今年は 2023、つまり 10 周年です!めでたい。あまり触れられていませんでしたが、実は節目の年でもありました。

来年以降については現時点では何も決まっていませんが、少なくとも私はやりたいと思っています。微力ながら支えていければと思います。

11 年目以降も VimConf をよろしくお願いします!

Vim 駅伝 100 回記念

この記事は Vim 駅伝 の 100 本目の記事です。

というわけでついに 100 本目です!

私は言い出しっぺにも関わらず、記事はほとんど書けていません。申し訳ない…。

にも関わらず、ここまで続いたのは賛同してくれた皆さんの尽力によるものです。 おかげで新鮮な Vim の記事が定期的に届けられています。本当にありがとうございます。

さて、今回は 100 回ということで、普段書いてないくせにこういう時だけしゃしゃり出てきました。ずるいですね。 ここまでの Vim 駅伝の歩みをざっくり振り返ってみたいと思います。

投稿回数ランキング

投稿回数ランキングを集計してみました。対象はこの投稿も含む 100 回分です。

順位 投稿回数 走者
1 8 staticWagomU
2 7 ryoppippi
2 7 monaqa
2 7 kyoh86
5 6 uga-rosa
6 5 tani
6 5 kawarimidoll
6 5 atusy
9 4 kuuote
10 3 thinca
10 3 ArcCosine
12 2 slin
12 2 utubo
12 2 ゴリラ
12 2 ryota2357
12 2 mityu
12 2 matoruru
12 2 K Ikeda
12 2 kamecha
12 2 eihigh
12 2 NI57721
22 1 yuucu
22 1 yukimemi
22 1 uhooi
22 1 tomato3713
22 1 tadashi-aikawa
22 1 swnakamura
22 1 sontixyou
22 1 ぺりー
22 1 raa0121
22 1 koralle
22 1 浅倉有人
22 1 ikorihn
22 1 igrep
22 1 hokorobi
22 1 IK
22 1 fuzmare
22 1 futsuuu
22 1 Fohte
22 1 Liquid_system
22 1 4513ECHO

参加ユニークユーザー数は 41 人でした。 何度も参加してくれている人もいる一方、「まずは参加する」を達成した 1 回投稿の人が 20 人と約半分でした。 少人数で同じ人が何度も投稿して回しているとどうしても無理が出てきますし、これは結構バランス良く分布したなと感じました。

記事の種類

記事をざっくり分類して、それぞれの記事がいくつあったのかを集計してみました。

なお、分類は私の独断と偏見によるものであり、イベント運営の公式見解とかではありません。 分類に迷った記事も多く、ノリと勢いだけで分類したのであまり一貫性がないかもしれません。明らかにおかしい!とかありましたらコッソリ教えてください。コッソリ直します。

順位 記事数 種類 種類の説明
1 38 プラグイン紹介 特定のプラグインや、その設定、使い方やテクニックについて紹介する記事です。
2 29 設定 特定のプラグインには依存しない設定、vimrc/init.vim(lua) などに関する記事です。
3 8 スクリプトテクニック プラグインの開発における Tips やノウハウを紹介する記事です。
4 6 Vim 駅伝 Vim 駅伝自体に関する記事や、企画です。
5 5 エピソード Vim との関わりや、Vim にまつわるお話の記事です。
5 5 スタイル Vim を使う上での考え方や流儀についての記事です。
7 3 本体 Vim 本体のビルドやパッチ作成に関する記事です。
7 3 使い方 基本的な使い方や機能を紹介する記事です。
7 3 Vim ライク Vim 自体ではない Vim ライクなものを紹介する記事です。

プラグインの紹介や、使っている設定の紹介が多い印象でした。身近な分記事にしやすい、などの理由がありそうです。

Appendix. ここまでの記事一覧

最後に記事一覧を載せておきます。Vim 駅伝のアーカイブページでも見られますが、せっかくなのでここに並べておきます。 どの記事をどこに分類したかも載せておきます。

皆さん本当にありがとうございます。今後もよろしくお願いします!新しい執筆者も増えるといいですね。

番号 公開日 走者 記事 種類
1 2023-03-01 thinca Vim 駅伝、始動します Vim 駅伝
2 2023-03-03 atusy Insertモードでも気軽に←・→したい 設定
3 2023-03-06 ryoppippi bunsetsu.vimとbunsetsu-wb.nvimを作ってます!!! プラグイン紹介
4 2023-03-08 tani Project V 「思考のスピードで編集せよ。32年の伝統をもつテキストエディタをビルドする。」 本体
5 2023-03-10 kyoh86 heirline.nvimでNeovimのStatusLineをカスタマイズしてみる プラグイン紹介
6 2023-03-13 staticWagomU Vim,Neovimのフォント変更方法について 使い方
7 2023-03-15 kuuote Vim Input Method Editor プラグイン紹介
8 2023-03-17 Liquid_system lualine.nvimでステータスラインをカスタマイズしよう! プラグイン紹介
9 2023-03-20 thinca Vim9 script の始め方 スクリプトテクニック
10 2023-03-22 matoruru 錆びついたinit.vimをLuaで書き換えてピカピカにする 設定
11 2023-03-24 fuzmare neovimターミナルモードエスケープと即座に確定するマッピング 設定
12 2023-03-27 tadashi-aikawa Vimを使わないVimmerであってもいい Vim ライク
13 2023-03-29 ArcCosine Vimのテキストオブジェクトとsurround.vimで効率よく入力 プラグイン紹介
14 2023-03-31 monaqa Vim 駅伝開始1ヶ月を振り返る Vim 駅伝
15 2023-04-03 IK Vim + npm install --save-dev textlint 設定
16 2023-04-05 eihigh ミニマリストに憧れて - 無彩色カラースキームを作った話 プラグイン紹介
17 2023-04-07 uga-rosa vusted & nvim-kitでユーザーの入力をテストする スクリプトテクニック
18 2023-04-10 ゴリラ denops-docker.vim のバグを直した話 プラグイン紹介
19 2023-04-12 monaqa dial.nvim の新機能紹介 プラグイン紹介
20 2023-04-14 ArcCosine HHKBとVimとの親和性について語る スタイル
21 2023-04-17 matoruru Vim(vi)との出逢いを振り返る エピソード
22 2023-04-19 atusy tsnode-marker.nvimでコードブロックとかの背景色を変える プラグイン紹介
23 2023-04-21 staticWagomU Eclipse 上で Vim ライクな操作を可能にする Vrapper を使ったはなし Vim ライク
24 2023-04-24 uga-rosa Neovim用のターミナルプラグインを作った話 プラグイン紹介
25 2023-04-26 ryoppippi Neovim 0.8以降のビルトインLSPについて 使い方
26 2023-04-28 ゴリラ My Vim philosophy 2 スタイル
27 2023-05-01 hokorobi dein.vim の hooks_file を使って vimrc を書き換えた話 プラグイン紹介
28 2023-05-03 slin DDSKKのチュートリアルをやりたい プラグイン紹介
29 2023-05-05 kamecha 部内SNSのVimクライアントもどきを作ってVim†完全に理解した†話 プラグイン紹介
30 2023-05-08 kyoh86 NeovimでScalaを使ってマインクラフトのプラグインを作ってみる 設定
31 2023-05-10 ryota2357 vim.ui.inputを自作floating windowにした 設定
32 2023-05-12 uga-rosa ccc.nvimのcolor highlighter機能について プラグイン紹介
33 2023-05-15 ikorihn NeovimとVSCode Neovimで使用するプラグインや設定を使い分ける 設定
34 2023-05-17 staticWagomU Neovim+LSPをなるべく簡単な設定で構築する ~ Lazy.nvim編 ~ プラグイン紹介
35 2023-05-19 monaqa Vim キーバインドをカスタマイズするとき考えていること スタイル
36 2023-05-22 ryoppippi NeovimでのSvelte/SvelteKitの開発環境 プラグイン紹介
37 2023-05-24 atusy leap.nvimを拡張して検索対象にラベルをつけて飛べるleap-search.nvimを作った プラグイン紹介
38 2023-05-26 kyoh86 Neovimの設定すべてをまるっと切り替えられるマルチプロファイル運用 設定
39 2023-05-29 uga-rosa ddu.vimにちゃんと入門した話 プラグイン紹介
40 2023-05-31 mityu zsh on :terminal on Vim で zsh のカレントディレクトリを Vim と同期する 設定
41 2023-06-02 staticWagomU キーマッピングを設定しないVimmerが居たっていい スタイル
42 2023-06-05 eihigh 2023年版VimでGoを書く プラグイン紹介
43 2023-06-07 sontixyou Neovimで今開いているファイルのパスをコピーするスクリプトを作った話 設定
44 2023-06-09 yukimemi Typescript で Vim / Neovim の設定を書く! 設定
45 2023-06-12 uhooi NeovimのHEADをビルドする方法 本体
46 2023-06-14 kawarimidoll Vim scriptで1回しか使えないコマンド・関数を定義する スクリプトテクニック
47 2023-06-16 staticWagomU vim.defer_fn でコマンドを直列実行する スクリプトテクニック
48 2023-06-19 uga-rosa LSP完全に理解した(ddu-source-lspの紹介) プラグイン紹介
49 2023-06-21 monaqa 【企画】これだけは外せない!あなたにとっての「いぶし銀」なプラグインを教えてください Vim 駅伝
50 2023-06-23 futsuuu Neovim の LSP 関係のプラグインの役割 プラグイン紹介
51 2023-06-26 4513ECHO Denopsでプラグインを作るときのTips スクリプトテクニック
52 2023-06-28 ryoppippi とあるコーディングチョットワカル勢のエディタ遍歴 エピソード
53 2023-06-30 monaqa Vim の一括置換を楽に行う裏技 設定
54 2023-07-03 staticWagomU 初めて参加したもくもく会の感想 エピソード
55 2023-07-05 tani タイポ修正を支える技術 プラグイン紹介
56 2023-07-07 kawarimidoll Vimでやべー名前のファイルが保存されるのを防止する 設定
57 2023-07-10 tani Vimmerのレベル10 スタイル
58 2023-07-12 NI57721 Vim を IME として使いこなす 設定
59 2023-07-14 tomato3713 Neovimでディレクトリを開いた時に任意のファイラープラグインを起動する設定を楽にするプラグインを作った プラグイン紹介
60 2023-07-17 K Ikeda vim-jp-westのオフ会幹事をしました エピソード
61 2023-07-19 ぺりー Vimカラースキーム自作のすすめ スクリプトテクニック
62 2023-07-21 monaqa 「いぶし銀プラグイン」企画集計結果発表(前編) Vim 駅伝
63 2023-07-24 atusy Vimでコマンドライン履歴を遡りやすくする 設定
64 2023-07-26 kyoh86 配下のファイルを一覧するときはディレクトリに色を付けると見やすい! プラグイン紹介
65 2023-07-28 ArcCosine denops.vim を使って初めてvim-pluginを作った。MarkdownをHTMLに変換してクリップボードにコピーする。 スクリプトテクニック
66 2023-07-31 yuucu lazy.nvimを使った起動時間チューニング入門! ~起動速度10倍を目指して~ プラグイン紹介
67 2023-08-02 浅倉有人 Vimっぽいな feat.初音zenn Vim ライク
68 2023-08-04 uga-rosa ddc-source-nvim-lspを大幅に強化した プラグイン紹介
69 2023-08-07 igrep Vimの検索で、都合がいいときだけ大文字小文字を区別する 使い方
70 2023-08-09 kawarimidoll Vimでspaceなしで展開できるabbrevっぽいものを作る 設定
71 2023-08-11 staticWagomU sandwichを使ったら案の定便利だったはなし プラグイン紹介
72 2023-08-14 kuuote フルパスをいい感じに入力する 設定
73 2023-08-16 ryoppippi 「commit messageを考えてる間によしなに git hooks を実行しておいてね!」を実現するneovimの設定をかいた 設定
74 2023-08-18 kyoh86 ddu.vimの使い方を俯瞰してみる プラグイン紹介
75 2023-08-21 monaqa 「いぶし銀プラグイン」企画集計結果発表(後編) Vim 駅伝
76 2023-08-23 tani Quickfix is all you need スクリプトテクニック
77 2023-08-25 kuuote cmdwinっぽい物を数行で作る 設定
78 2023-08-28 utubo mecabを使って漢字をよみがなに変換するプラグインetc. プラグイン紹介
79 2023-08-30 tani Artemis: Bridging gap between Vim and Neovim プラグイン紹介
80 2023-09-01 atusy mini.surroundによるHTMLタグ編集のemmet対応 プラグイン紹介
81 2023-09-04 K Ikeda vim-jp-west 歓迎&懇親会を開催しました エピソード
82 2023-09-06 swnakamura VimとIMEの仲を取り持つ 設定
83 2023-09-08 koralle null-ls.nvimがアーカイブされちゃったので移行先としてefm-langserver(+nvim-lsp)を検討してみる) プラグイン紹介
84 2023-09-11 kuuote 素早く安全にプラグインにパッチを打つ 設定
85 2023-09-13 raa0121 Ubuntu でも最新のVimを使いたいなら、Dockerから拾えばいいでしょ 本体
86 2023-09-15 NI57721 俺のAZIKが火を噴くぜ! 設定
87 2023-09-18 Fohte GhostText: Vim でブラウザのテキストエリアを入力する プラグイン紹介
88 2023-09-20 kawarimidoll Vimでインデント幅の単位で左右移動する 設定
89 2023-09-22 staticWagomU 闇の力への入門 ddc.vim編 プラグイン紹介
90 2023-09-25 kyoh86 Quickfixの中身を表として書き出せると地味に便利 設定
91 2023-09-27 ryoppippi BunとNeovim 設定
92 2023-09-29 ryota2357 textlintをefm-langserverとnvim-lspで導入してみた プラグイン紹介
93 2023-10-02 slin skkeletonのTips プラグイン紹介
94 2023-10-04 kamecha ddu.vimのアクション周りを便利にしよう プラグイン紹介
95 2023-10-06 utubo vimでgit addする前に--dry-runして確認する 設定
96 2023-10-09 kyoh86 denols/typescript-lsのLSPスイッチングは意外と気を遣うよという話 プラグイン紹介
97 2023-10-11 mityu :terminal から親の Vim でファイルを開く(bash/zsh 編) 設定
98 2023-10-13 kawarimidoll Vimで直前の検索結果をQuickFixに格納する 設定
99 2023-10-16 ryoppippi Vim/Neovimのプラグインマネージャーを悪用してCLIの管理ツールとして使う 設定
100 2023-10-18 thinca 100 回記念 Vim 駅伝

Vim9 script の始め方

この記事は Vim 駅伝の 9 本目の記事です。

9 本目ということで、Vim9 script について書きます。

Vim では Vim script を使ってエディタの挙動を拡張できますが、Vim 9.0 では新たに Vim9 script が追加されました。本記事ではそのさわりとして、Vim9 script の実行方法について簡単に紹介します。

Vim9 script について

従来の Vim script にはいくらか問題がありました。特に実行するたびにパースを行う関係上、動作が非常に遅く、また互換性の観点からわかりづらい文法があったりします。

Vim9 script は Vim script との互換性を捨て、処理速度の向上とよりわかりやすい文法を提供する目的で導入されました。 と言っても、ベースとなる文法を大きく変えることはせず、いくつかのとっつきづらい文法の見直しが行われています。

その他の特徴として、型の導入による型チェックの機能があります。 開発中の機能ですが、将来的にもあまり複雑なチェックができるようになることはないのではないかと個人的には予想しています。

Vim9 script の実行方法

Vim9 script として実行されるコードを書く方法は大きく 4 種類あります。

ファイル

ファイルの先頭に :vim9script Ex コマンドを置くと、そのファイルは Vim9 script として実行されます。

vim9script

var name = 'Vim9 script'
echo $'Hello, {name}'

関数

Vim script では :function Ex コマンドで関数を作ります。 Vim9 script では、代わりに :def を使います。これは Vim script 中にも混在して書くことができ、関数の中身だけが Vim9 script になります。

" ここは Vim script
let g:hello = 'Hello'

def! Greeting(name: string)
  # ここは Vim9 script
  echo $'{g:hello}, {name}'
enddef

" ここは Vim script
call Greeting('Vim9 script')

Vim9 script で定義した関数も通常の Vim script から呼び出すことができます。

:vim9cmd Ex コマンド

:vim9cmd Ex コマンドを使うと、その場でだけ Vim9 script を実行できます。

vim9cmd var name = 'Vim9 script'
vim9cmd echo $'Hello, {name}'

:command:autocmd

:command Ex コマンドと :autocmd Ex コマンドでは、実行されるコマンドの部分にブロック記法による Vim9 script の記述ができます。

command! -nargs=1 Hello {
  var name = <q-args>
  echo $'Hello, {name}'
}

Hello Vim9 script
" サンプルなので augroup は省略
autocmd! User hello-vim9 {
  echo 'Hello, Vim9 script'
}

doautocmd User hello-vim9

この場合のブロックは } で始まる行を終了行とするため、入れ子にするなどして別の } が行頭に来てしまうと期待通りに動作しないことに注意が必要です。

autocmd は、Vim9 script 内で実行するとその内容も Vim9 script として解釈されます。

def! MyAutocmd()
  autocmd! User hello-vim9 g:str = 'Vim9 script'
enddef

call MyAutocmd()
doautocmd User hello-vim9
echo $'Hello, {g:str}'

まとめ

Vim9 script を実行する方法について紹介しました。

  • ファイル全体を Vim9 script として実行する方法
  • Vim9 script の関数を定義する方法
  • 一時的に Vim9 script を実行する方法
  • その他の特殊な箇所

と言っても、Vim9 script の書き方がわからないと中身が書けないかと思います。

Vim9 script 自体の書き方についてはいずれ(気が向いたら)書こうと思います。

Vim 駅伝、始動します

これは Vim 駅伝 の 1 本目の記事です。

Vim 駅伝は、駅伝でタスキを繋ぐように Vim に関する記事を参加者で順番に書いていくイベントです。

発端

2023 年 2 月 6 日、vim-jp 内で Advent Calendar が話題に上がりました。

Advent Calendar は 12 月の 1 日から 25 日まで毎日参加者がトピックに関する記事を書いていくイベントです。 この時期になると大量の Advent Calendar が立てられ、それぞれのトピックで毎日記事が公開されます。 12 月に集中して大量の記事が公開され、お祭りのようなイベントとして毎年盛り上がります。

同じテーマの Advent Calendar がいくつも併走していることに対して、私が以下のような発言をしました。

ぶっちゃけ 12/1 ~ 12/25 の間に何周分も大量に記事が投下されるよりも長い期間毎日投稿された方が私は嬉しい

見ての通り、「わかる」のリアクションがたくさん付きました。同じように感じている人は結構いたようなので、後日以下のようなアンケートを取ってみました。

リレー執筆企画についてのアンケート

結構興味ある人が多そう。鉄は熱いうちに打て。というわけで Slack 内に専用のチャンネル #event-vim-ekiden を作り、イベントのための Web サイトをみんなで協力して用意しました。 色々準備をしていた関係で 2 月の頭から少し時間が空いてしまいましたが、本日 2023 年 3 月 1 日から開始します。

Vim 駅伝の概要

細かい部分は走りながら決めていくことになると思います。

  • 誰でも参加 OK
  • 投稿は月、水、金の週 3 回
    • 参加人数的にも、毎日は恐らく持たない。できるペースでやっていく
  • 終わりについては今のところ考えていない
    • 執筆者がいなくなったら自然消滅になるのかなと想像している
  • 駅伝になぞらえて「区間」のような区切りを用意したい
    • という話をしているが、現時点では何も決まっていない
    • 1 ヶ月で 1 区間?
    • 区間の区切りには何をするのか?

参加方法

誰でも参加可能です。 まずは書きたい記事を考えます。Vim に関することなら何でも大丈夫です。

  • 今日、人に教えてもらった Vim の Tips
    • あなたが知らなかったということは他にも知らない人はたくさんいるはず
  • 作ったプラグインの紹介
  • VSCodeVim(Neovim) について
  • ブラウザで使える Vim 系の拡張
  • Vim の歌を作ったので聴いてほしい
  • 内容はこれから考える。まずは参加だ

記事を書く場所は、インターネット上で広く公開されている場所ならどこでも大丈夫です。 技術記事の投稿サービスでも、自前のブログでも、スニペットサービスでもどこでもよいです。

分量も自由です。140 文字以内でもよいし、1 万文字を越える大作でも大丈夫です。 ただし、長くなる場合はシリーズ化することも検討してみてください。その方が読む側も書く側もラクになるはずです。

参加を決めたら、以下の Vim 駅伝のサイトから、まだ誰も登録していない日を選んで「参加登録」のリンクに飛びます。

https://vim-jp.org/ekiden/

すると GitHub の Issue を作成するページに飛びます。

GitHub Issue 作成ページ

最低限記事のタイトルを入力してください。入力は必須ですが、公開日までに入っていれば大丈夫なので「なにか書く」などでも大丈夫です。 執筆者名は、空にすると GitHub のユーザー ID になります。それ以外がいい場合は入力してください。 記事の URL も後からで大丈夫です。公開予定の URL がすでに決まっている場合は入力します。

Issue を作ると CI が動作し、Web サイトに反映されます。しばらく待ったら確認してみてください。

あとからタイトルや記事の URL が決まった場合は、Issue の description を編集して直接入力してください。編集の際はフォームではなく Markdown を編集することになるので、必要な箇所だけを編集してください。フォーマットが崩れると CI がうまく処理できない場合があります。

当日になったら記事を公開してください。あとはやることは特にありません。

定期的に参加してもらってもよいですし、スポット参加も大歓迎です。誰かが書かないとタスキが途切れるので、積極的に参加して頂けると嬉しいです。

コントリビューター募集

一番のコントリビュートは記事を書くことなのですが、それ以外にもやることがあります。

見ての通り突発で始まったので、主に Web サイト周辺の整備や参加希望者への案内が不十分な状態です。 この辺りの相談は vim-jp Slack 内の #event-vim-ekiden でしています。

Slack に参加するのが難しい方は GitHubvim-jp/ekiden にて Issue を立ててもらっても大丈夫です。 参加登録の Issue ではなく、テンプレートを使わずに Issue を立ててください。

最後に

このイベントが継続できるかどうかは執筆者が集まるかどうかにかかっています。皆さんのご参加お待ちしております。