Vim magic-レジスタ

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 」の代わりに特殊レジスタ使用されます)。移動コマンド`/nN{および}を使用します。テキストが削除されるたびに、レジスタ" 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



ハッピーバイミング!



All Articles