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 td
vnoremap tx
nnoremap tt dd
nnoremap T D