Vim 使いの「ブイ」(仮名)です。Vim のすゝめ改では、現代のテキストエディタについてのあらゆる話題をテーマに Vim の視点から見た話を行います。
前回の記事から期間が空き、世間ではついに Vim 8.2 がリリースされたようですね。月日が経つのは早いものです。
今回のテーマは「Vim への Pull Request 紹介」です。
皆さんは毎日 Vim をビルドし、新機能に心を動かされ、新たなバグを踏み充実した生活を送られていることでしょう。しかし、その日々に慣れてしまい何か物足りない人達がいるかもしれません。
そんなときにオススメしたいのは、Vim への Pull Request を眺めるということです。 Vim はオープンソースであり、世界中の方からコードが寄稿されています。 これらを見ていくことで、将来の Vim に実装されるかもしれない機能が分かります。
1 template string
https://github.com/vim/vim/pull/4634
このパッチは Vim に template string を追加する機能です。文字列の中に式を埋め込 んで展開することができます。
パッチでは次のような使用例が挙げられています。
echo $'I have ${10}' " I have 10
echo $'I ${{"love": 1000}}' " I {'love': 1000}
$''
が template string であり、${}
が式展開のためのプレースホルダーを表すよ
うです。
従来だと printf()
を用いる必要がありました。
echo printf('I have %d', 10) " I have 10
echo printf('I %s', string({"love": 1000})) " I {'love': 1000}
もしくは、文字列結合でも同じことができます。
echo printf('I have ' . string(10)) " I have 10
echo printf('I ' . string({"love": 1000})) " I {'love': 1000}
printf()
でも意味は通りますが記述は冗長になります。
この機能が本体に入ると便利な場面は多いのではないでしょうか。
2 tcd -, lcd -
https://github.com/vim/vim/pull/4362
このパッチは lcd -
と tcd -
を追加するためのパッチです。
もともと、cd -
という前のカレントディレクトリへ移動するコマンドはあったのです
が、これを lcd
, tcd
へ拡張したものになります。なんで今までなかったのだろう
というのが個人的な感想です。
3 ch_listen()
https://github.com/vim/vim/pull/3639
このパッチは Vim がサーバーとなり他からの通信を待ち受けることができるようになる
ための ch_listen()
を追加します。
mattn 氏が VimConf 2018 の発表ネタとして使っていたこともあり、知る人ぞ知るパッ
チとなっています。Vim で Web サーバーを作ることができる、実用性はともかくとして
夢が広がります。
パッチ自体は 2018 年 11 月に開発されていますが、今日に至るまでマージされていま せん。todo.txt には入っているので、もしかすると将来的にマージされるチャンスがあ るかもしれません。
4 rand(), srand()
https://github.com/vim/vim/pull/1277
このパッチは Vim に乱数生成機能を追加します。いろいろな用途があると思いますが、 ぱっと思いつくのはゲーム用途でしょうか。 従来は標準の乱数生成機能がなかったために、時間情報といった他のもので代用せざる をえませんでした。
使用例は以下の通りとのことです。
:echo srand()
[123456789, 362436069, 521288629, 88675123]
:echo srand(-1)
[1479837050,, 362436069, 521288629, 88675123]
:echo srand(2)
[2, 362436069, 521288629, 88675123]
Note: この機能は無事 Vim 8.1.2342 にマージされています。
This article is made by Vim.