この記事では、Vimでプラグイン無しで計算する方法のうち、「Expression レジスタ “=」についてご紹介します。
[解答] Expression レジスタ “= を使う
ちょっと特殊なレジスタを利用します。ヘルプの説明はこちら。
7. Expression レジスタ “= quote_= quote= @=
change – Vim日本語ドキュメント
これは、本当はテキストを蓄えるレジスタではないが、レジスタを使うコマンドで式を
評価するために使える。この expression レジスタは読み取り/書き込み可能である。
” または CTRL-R の後に ‘=’ を打ち込むと、カーソルはコマンド行に移動し、あらゆ
る式を入力することができる (expression を参照)。コマンドラインから入力できる
普通の編集用コマンドは、式用の特別履歴も含め、全て使用可能である。<CR> を打ち
込んでコマンドライン入力を終了させると、式の結果が計算される。<Esc>を打ち込ん
で終了させると、式は破棄される。式が入力されないときは、(コマンド “/” と同様)
前回の式が使われる。
式を評価した結果は文字列でなければならない。評価した結果が数値なら、文字列に変
換される。”p” と “:put” コマンドの場合、結果が浮動小数点数なら文字列に変換され
る。リストの場合、各要素が文字列に変換され、それぞれが 1 行として挿入される。
辞書または FuncRef はエラーメッセージが出る(string()を使って変換する)。
レジスタ “= が “p” で使われると、文字列は <NL> 文字 {訳注: New Line — 改行}
の所で分割される。文字列が <NL> で終わっていたら、これは行単位のレジスタと見な
される。
こちらはヘルプがかなり分かりづらいです。
要は、この Expression レジスタを使うと、計算などの処理を実行して挿入することが可能です。
例えば、20+80 の計算結果を Expression レジスタに格納して、結果を貼り付けるとこうなります。

電卓を出して打ち込むよりは早いですが、なかなか使いどころが難しいかもしれません。
ここで実行できる計算は、こちらを参考にしてください。
https://vim-jp.org/vimdoc-ja/eval.html#expression-syntax
ちなみに、インサートモードで Ctrl+r = と実行すると、計算結果がすぐに挿入できます。
この辺は好みが分かれるかもしれません。
計算式
単純な計算は簡単です。
=20+80 (100が無名レジスタに格納される) =10-2 (8が無名レジスタに格納される) =5*12 (60が無名レジスタに格納される) =150/30 (5が無名レジスタに格納される)
プログラミング言語やExcelのようにも計算できたりなんかします。
=round(123.456) =pow(5, 3) =printf("0x", 155)
といっても、あくまで一行での計算になりますので、ほどほどに。
このVimコマンドの補足情報
- 利用頻度[star rate=2]
- 便利さ[star rate=3]
- 覚え易さ[star rate=2]
関連するVimヘルプ
Vimからは、下記のコマンドでヘルプを確認できます。
:help quote_= :help quote= :help @=
ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。
参考書籍
こちらの書籍が参考になります。
[temp id=3]