Vimのレジスタについては、以前の投稿で既に記述されていますが、情報をまとめて少し追加することにしました。 この記事を読んだ後、あなたは(言葉の意味で)コピー&ペーストの真のマスターになります:)
コピー/カット/ペースト操作を使用せずにエディターで作業することを想像するのは困難です。 Vimはこのための非常に強力なツールを提供します。 そのため、レジスタは、Vimが
yでコピーまたは
cまたは
dで削除したテキストを置く場所ですが、それだけではありません。 Vimが配置する他のいくつかの特殊レジスターがあります。たとえば、
/で検索したテキストや、エディターウィンドウにドラッグアンドドロップしたテキストです。 特定のレジスタにテキストをコピーまたは削除することを示すには、コマンドの前に名前を指定する必要があります。 たとえば、
「ayyは文字列全体を登録するためにコピーします
」a 。 ただし、すべてのレジスタを書き込むことができるわけではなく、一部のレジスタは読み取り専用です(さらに、書き込み専用のレジスタもあります)。
種のためにレジスタに関連付けられているもう少し特別なVimovskayaのマジック。最後まで読むのが面倒ではありませんでした。
-Vimは削除の小さな履歴を保持するため、その後に他のテキストを削除またはコピーした場合でも、以前に削除したテキストを貼り付けることができます。
-Vimには26個の名前の付いた「クリップボード」があり、そこにテキストを長時間追加でき、コピーや削除操作中に失われることはありません。
-Vimは、レジスタの内容を上書きせずにテキストをコピーまたは削除できますが、それに追加します。
Vimには次のタイプのレジスタがあります。
1.名前のないレジスタ
"" 。 一種の「デフォルトレジスタ」。 コピーまたは削除するときに大文字と小文字を指定しなかった場合、テキストはここに配置されます。 ただし、テキストをレジスタ
「a with
」ayyに明示的にコピーしても、テキストは
「」で表示されます。 唯一の例外は特殊レジスタ
"_で 、これについては以下で説明します。このレジスタを使用する場合、
" "の内容は変わりません。
2.番号付きレジスタ
「0- 」9 。
レジスタ
「0には、大文字小文字を区別せずにコピーされた最後のテキスト(
y )が含まれます。 つまり、通常のyankはテキストをレジスタ
""および
"0に入れ、
" myはレジスタの内容を変更します
""および
"mが、内容を
" 0のままにします。
レジスタ
「1」には、削除中にレジスタが指定されておらず、テキストに少なくとも1行が含まれている場合、最後に削除されたテキストが含まれます(そうでない場合、
「1 」の代わりに特殊レジスタ
が使用されます)。移動コマンド
% 、
( 、
) 、
` 、
/ 、
? 、
n 、
N 、
{および
}を使用します。テキストが削除されるたびに、レジスタ
" 1の古い内容はレジスタ
"2に配置され、
" 2の内容は
"3に配置されます。さらに、レジスター
9の内容
は失われ、削除前にレジスター
8の内容に置き換えられます。
3.レジスタ
'' -1行未満で、レジスタの登録時に明示的に指定されなかった場合、削除されたテキストが含まれます。
4.名前付きレジスタ
" a-
" zまたは
"A- "Z。 同じテキストを頻繁に貼り付ける必要があり、コピーまたは削除操作で上書きしたくない場合は、名前付きレジスタ
「a-」zを使用します。
また、名前付きレジスタを使用して、削除またはコピーされたテキストを「蓄積」できます。 これを行うには、レジスタ
"A- " Zを使用します
。5.読み取り専用レジスタ
": 、
"。 、
「%および
」#":コマンドラインの最後の内容が含まれています。
"。は最後に挿入されたテキストを含みます(このテキストはCtrl + Aを使用して貼り付けモードでも挿入できます)
「%には現在のファイルの名前が含まれます
「#には代替ファイル(現在のファイルの前に編集されたファイル)の名前が含まれます
6. Expression case
"= 。テキストを保存するためではなく、式計算の結果を挿入するために特別なマジックケースが使用されます。たとえば、挿入モードで
Ctrl + R = 5 + 5 * 5と入力してEnterを押し、テキストに貼り付けます
30. Vimaのレジスタ、変数、またはオプションの値を使用して、式をより複雑にすることができます。
7.選択のための登録とドラッグアンドドロップ
"* 、
" +および
"〜 。
レジスタ
「*」および
「+」は、外部との通信に使用されます。 たとえば、Winでは、これらのレジスタの内容はWindowsクリップボードの内容と一致します。 つまり、Vimから別のアプリケーションにテキストをコピーするには、テキストをレジスタ
「*」にコピー(または切り取り)し、必要に応じて貼り付けます。外部アプリケーションからVimにテキストをコピーするには、外部アプリケーションでテキストをコピーして貼り付けますVimのレジスタ
"*から 。 レジスタ
「* 」と
「+ 」の違いは、X11のみです。 これらについては、
help x11-selectionで詳しく説明しています。
読み取り専用レジスタ
〜には、Vimウィンドウにドラッグされたテキストが含まれます。
8.「ブラックホール」レジスタ "
_ 。これは書き込み専用のレジスタです。削除時にデフォルトレジスタ
" "およびデジタルレジスタ
" 1〜 "9の内容を変更しないために使用されます。このレジスタからは何も起こりません。
9.最後の検索の登録
"/ 。これは、最後の検索で使用された式を保存します。内容は、
nおよび
Nコマンドでも使用され、
'hlsearch'オプションがオンのときにテキストを強調表示します。
レジスタの内容を表示するには、コマンド
regを使用します。
:パラメーターなしの
regは、すべてのレジスターの内容を表示します。 レジスタ
「3 」と
「f 」の内容のみを表示するには、
reg 3fと書き
ます 。
そして最後に。 次のコマンドを使用して、レジスタの内容を変更できます。 例えば、
「/ register
」に書き込むには、
let:/ / =「the 。
」 と書き
ます 。または、例えば、レジスタ
mの内容を、以前に「保存した」システムクリップボードに入れます。 、次のように書くことができます
:let @ * = @ m 。
ハッピーバイミング!