v:register が更新されない場合がある #988

Open
thinca opened this Issue Nov 27, 2016 · 0 comments

Projects

None yet

1 participant

@thinca
Member
thinca commented Nov 27, 2016 edited

質問・報告の内容

再現例と期待値

例えば何かの文字の上で以下の操作を実行します。

"_x:echo v:register<CR>

結果は以下になります。

_

期待する結果は以下です。

"

解説と補足

上記の例では "_ レジスタを指定して x(1文字消す) を実行し、その後 :echo v:registerv:register の中身を確認していますが、_ の指定は x の実行で処理されているため、その後のコマンドでは v:register はデフォルトの " に戻っているべきです。
実際、"_x の後でレジスタの確認を行わずに再度 x を実行すると、切り取った文字はデフォルトレジスタ "" に入ります。
いくらかパターンを試しましたが、dd などの行が変わるようなコマンドを実行した場合は v:register の中身はきちんと更新されるようです。
↑これは私の環境がおかしかったようです。(追記)

"_xxxx のように連続で行った場合も、v:register は最後まで _ のままのようです。しかし、2回目以降の x の結果は " レジスタに格納されています。(追記)

Vimのバージョン

8.0.0104

OSの種類/ディストリ/バージョン

  • Windows 10 Pro 64bit
  • Vim 8.0.0055
  • Gentoo Linux 64bit

使用している or 関係していそうなプラグイン

なし

その他

以下のページで報告されていたのがきっかけです。
Vim - Vim script の v:register の使い方(56661)|teratail

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment