Neovimでのレジスタ操作についてまとめる。

:register

もしくは

:reg

で、一覧が表示される。 以下は出力結果のサンプル。

:reg

Type Name Content
  l  ""   import React from "react"
  l  "0   import React from "react"
  l  "1   const count = 0
  l  "2   function increment() {
             return count + 1
           }
  c  "-   ;
  c  "a   npm run dev
  c  "*   copied text
  c  "+   copied text
  c  ".   bar
  c  ":   reg
  c  "%   projects/sample-app/src/main.tsx
  c  "#   projects/sample-app/package.json
  c  "/   increment

Type

レジスタの種類を表す。

  • l: 行単位のレジスタ。1行の場合も、複数行の場合もある。
  • c: 文字単位のレジスタ。
  • b: Ctrl + v のビジュアルモードで選択し操作したブロック単位のレジスタ。

Name

" の後に続く文字にそれぞれ意味がある。

レジスタ 意味 主に何が入るか
"" 無名レジスタ 直近のヤンク / 削除 / 変更
"0 ヤンク専用 直近の yank
"1 ~ 9 削除履歴の先頭 直近の行単位の削除・変更
"- 小削除レジスタ 1行未満の削除・変更
"+ システムクリップボード OSのクリップボード

"" 無名レジスタ

直前に操作した 内容が入る。 p した時は基本的にこれが貼り付けられる。

“0 ヤンク用レジスタ

最後にヤンクした 内容が入る。

つまり、yを使ったコマンドでヤンクした場合は、"""0に同じ内容が入る。

“1~9 行単位の削除用レジスタ

行単位の削除や変更が入る。一番新しいものが “1 に入り、“2, “3 … と古いものになっていく。

たとえば、

dd
cc

あたりをやるとここに入る。

“- 小削除レジスタ

1行未満の小さい削除が入る。

たとえば、

x
dw
dl

など。

AIによると、ちょっと文字を消すことによって削除履歴 “1~9 を汚さないための仕組みだそう。

“+ システムクリップボード

Mac や Linux や Windows のOSクリップボード。Vimの外側でクリップボードに追加された場合でも更新される。

貼り付ける場合

“とここまで紹介してきたようなレジスタ名を指定して貼り付けることができる。

""p # 無名レジスタを貼り付ける
"0p  # ヤンクレジスタを貼り付ける
"+p  # システムクリップボードを貼り付ける"

といった具体だ。