vimでは通常のクリップボードのコピー&ペーストとは違う
レジスタという保存領域を持っている
x
やy
やd
の操作時にはレジスタという領域に保存されるようになっている
レジスタの種類
↓ @0829さんがわかりやすくhelpの内容をまとめてくださってました
vimのレジスタ
むずかしい・・・
という方のために、簡単にまとめると
(個人的に必要と思うものだけ)
レジスタ | 意味 |
---|---|
" | 通常のヤンクや削除時に無差別に入る |
a-z | 指定して入れれる(上書き) |
A-Z | a-zの内容に追加で入れれる |
+ | クリップボード。winなら* でもよいがmacを考えると+ を使うべし |
0 | 直近のヤンク(コピー)したものが入る ※1 |
1-9 | 直近の変更・削除したものが入り、順に1から9へと移っていく。9以降は削除される ※1 |
. | 直近に挿入した文字が入る |
: | 直近に実行したコマンドラインのコマンドが入る |
% | 編集中のファイル名 |
_ | 保存されない消去専用のレジスタ(ブラックホール) |
※1:レジスタを指定していなかった時のみ入る
使い方
ノーマルモード
"
+ {レジスタ} + {オペレータ}
で任意のレジスタに入れるようにして、コマンドを実行できる
{オペレータ}のみでレジスタをしてしていなければ、"
の無名レジスタが対象のレジスタとなる
|オペレータ|意味|
|:-:|:-:|:-:|
|x|カーソルの文字を削除+ヤンク|
|s|カーソルの文字を削除+ヤンク+挿入モードに入る|
|yy|1行ヤンク|
|dd|1行削除+ヤンク|
|cc or S|1行削除+ヤンク+挿入モードに入る|
|d + 位置指定|範囲を削除+ヤンク ※2|
|y + 位置指定|範囲をヤンク ※2|
|p|カーソルの後に貼り付け|
|P|カーソルの前に貼り付け|
※2:wやbやeやfやGなどの移動でのコマンドと組み合わせることができ、カーソル位置から移動先の位置までが対象範囲
挿入モード
<C-r>
+ {レジスタ} : レジスタの内容を貼り付け
ビジュアルモード
"
+ {レジスタ} + {オペレータ}
|オペレータ|意味|
|:-:|:-:|:-:|
|x or d|削除+ヤンク|
|y|ヤンク|
使い方の例
私のマッピング例です
削除 と 切り取り をはっきりと分けて使い分けてます
" 削除のみ
vnoremap d "_d
nnoremap d "_d
vnoremap D "_D
nnoremap D "_D
vnoremap x "_x
nnoremap x "_x
vnoremap s "_s
nnoremap s "_s
" 切り取り
nnoremap t d
vnoremap t x
nnoremap tt dd
nnoremap T D