この記事は Vim 8.0 Advent Calendar の 9 日目の記事です。
Vim 8.0 では 2 進数のサポートが強化されています。
2 進数の数値リテラル
0b もしくは 0B で始まる 2 進数リテラルが追加されました。
echo 0b1010 == 10
" => 1
<C-a> <C-x> の 2 進数サポート
'nrformats' オプションに指定できる値に bin が追加されました。
これはデフォルトで含まれているため、特に設定せずに利用可能です。
0b や 0B で始まる 2 進数の数値の上で <C-a> や <C-x> を実行すると、数値を増減できます。
0b1000
↓<C-x>
0b0111
printf() の 2 進数サポート
printf() 関数のフォーマットに %b が追加されました。
これを使うことで、数値を 2 進数の文字列に変換できます。
echo printf('0b%b', 10)
" => 0b1010
もちろんフラグにも対応しています。8 桁の 0 埋めパディングをするには以下のようにします。
echo printf('0b%08b', 10)
" => 0b00001010