タグ付けされた質問 「register」

ヤンク(コピー)、削除(切り取り)、配置(貼り付け)のためのテキストのストアスニペットを登録します。Vimでは、レジスタはマクロ再生にも使用され、一部のレジスタは特別であり、OSクリップボードを参照したり、式を評価したりできます。

2
記録(記録されたマクロ)を表示および編集するにはどうすればよいですか?
私は(私の操作を記録するために複雑な繰り返しを使用していますqq、レコードにいくつかの操作を、q停止する)と私は間違いをしました。 記録した内容を確認して、間違いを修正することはできますか? 記録されたキャラクターを@q作品ごとに呼び出しますが、マッピング(:map q- No mapping found)に表示されません。 次のように入力しても、ヘルプにはあまり情報がありません:help recording。

5
レジスタをクリアせずに特定の操作を実行する
多くの場合、構成ファイルで行のブロックをコピーして貼り付けてから、そのブロックに小さな変更を加えます。貼り付けた後、x削除する文字を削除してから、次のブロックを貼り付けます。を除きx、削除された文字をクリップボードに置くので、行ブロックを再度コピーする必要があります。 挿入モードに入らずにこれを行う方法はありますか?


3
レジスタ/複数のレジスタを完全にクリアするにはどうすればよいですか?
私はかなり頻繁に使用する:registers(の役割まさに、私がどこに置くものを忘れ、すべてのレジスタの内容を表示するコマンドを"*、".、"%、などです)。 特に、"オプションでオプションを設定したためviminfo、vimセッション間でレジスタが保持されるため(一般的には短期的には)、:registersリストは時間とともに長くなり、より面倒でいっぱいになります本当に古いもので。 これまでのところ、これを修正することがわかった唯一の方法は、「古い」レジスタの内容の一部を手動で編集することです~/.viminfo。これを行う必要vim -u NONEがあり、少し面倒です。 すべてのレジスタを消去する、または特定のレジスタを消去するよりクリーンな方法があり、:registersリストに表示されなくなりましたか?

3
ブラックホールレジスタ( "_)の用途は何ですか?
最近"_、書き込み専用のレジスタであるブラックホールレジスタについて読みました。 Vimのドキュメントでは、次のように説明しています。 ブラックホールレジスタ "_ このレジスタに書き込むとき、何も起こりません。これを使用して、通常のレジスタに影響を与えずにテキストを削除できます。このレジスタから読み取る場合、何も返されません。 私が読んだすべての記事と本では、著者は常に同じ例を使用しています。これは、以前にヤンクしたものを消去せずにテキストを削除する必要があるときにこのレジスタを使用することです。 私はこの使用法を理解していますが、このレジスタの他の使用例を見つけることができないという事実に驚いています。 このレジスタは、他のいくつかのユースケースで役立ちますか?はいの場合、どれですか? このレジスタの唯一の目的が前に引用したユースケースで使用される場合、Vimの作成者はなぜこのようなレジスタでこの問題を解決することにしたのですか?私が意味するこの回答使用するよりも少ないキーストロークを意味し、問題の解決ショーを"_。を使用"0すると、ブラックホールレジスタの使用を回避することもできますが、なぜそれを作成したのですか?

3
Vimに「小さな削除」をレジスタ「1」に保存させることもできますか?
YankRingプラグインを最近セットアップから削除しましたが、これはマクロにいくつかの問題を引き起こしていたためですが、主に、代わりにVimのレジスターを使用するように訓練する方が良いと判断したためです。さらに削除が行われるにつれて、などに"1移動し"2、"3非常に便利です。 ただし、削除/変更によって1行未満のテキストが"-削除されると、代わりに小さな削除レジスタに保存されます(特定の移動コマンドにはいくつかの例外があります)。後続の小さな削除が行われると、そのテキストの一部は失われます。 Vimですべての削除をレジスタに保存することは可能"1ですか? nnoremap d "1d ほとんど動作しますが、レジスタ"1 との 両方にテキストが表示されます"2。 小さな削除レジスタの機能が影響を受けるかどうかは気にしません。名前付きレジスタに小さな削除を保存するように振る舞いを変更することを提案することは、間違いなく有用な答えではありません-それは私が現在していることです。
14 register 

1
なぜラインフィードが検索レジスタ内でヌル文字に変換され、コマンドラインでキャリッジリターンに変換されるのですか?
次のテキストがある場合: foo bar 視覚的に選択してコピーします。 テキストは名前のないレジスタに保存され、"その内容は:reg "次のとおりです(の出力)。 "" foo^Jbar^J このチャートによると、^J改行のキャレット表記のようです。 次のようにa入力して、名前のないレジスタをレジスタに複製する場合::let @a = @" その内容(の出力:reg a)は次のとおりです。 "a foo^Jbar^J 変わらなかった。 を入力して検索レジスタに複製した場合、:let @/ = @"その内容(の出力:reg /)は次のとおりです。 "/ foo^@bar^@ 前のチャートによると、^@Nullキャラクターのキャレット表記です。 なぜ改行は検索レジスター内で自動的にヌル文字に変換されるのaですか? コマンドライン(またはの検索内/)に名前のないレジスタを挿入する場合、を入力して:<C-R>"、次のように挿入します。 :foo^Mbar^M 繰り返しますが、最後のチャートによると、^Mキャリッジリターンのキャレット表記法のようです。 コマンドラインで改行がキャリッジリターンに自動的に変換されるのはなぜですか? 編集: 通常、次のように入力してリテラル制御文字を挿入できます。 <C-V><C-{character in caret notation}> たとえば、を<C-R>入力してリテラルを挿入できます<C-V><C-R>。 一見どんな制御キャラクターに対してもできます。 しかし、私は私が入力した場合ので、私は、バッファ内またはコマンドラインでリテラルLFを挿入することができないんだということに気付きました:<C-V><C-J>それは挿入^@、ヌル文字を、代わりに^J。 LFが検索レジスタ内でNULに変換されるのと同じ理由ですか? 編集2: では:h key-notation、これを読むことができます: <Nul> zero CTRL-@ 0 (stored as …

1
Vimが特定のファイルタイプのイベントを記録しないようにする
このstackoverflowの質問に追加するに.vimrcは、特定のファイル拡張子(.gpgファイルなど)の「プライベート編集」を確実にするために何を入力する必要があります。 セッションの有効性を損なうことなく、行われた作業についての情報はレジスタを含む、保存されるべきではない、の履歴、コマンド履歴、ビュー、スワップなどを検索しgpg、ファイル、1を使用することができ、このvimのプラグインを、しかしプラグインを編集する以外に、どのようにでしょうこれらの議論されたアイデアを任意のファイルタイプに拡張しますか? おそらく次のコマンドを使用します。 if <ft in privacy_ext_list> set noswapfile set noundofile set viminfo= endif しかし、適切な条件文に加えて、何が欠けていますか? さらに、Vimscriptでファイル拡張子の配列を作成し、現在のファイルタイプが配列内にあるかどうかを評価する方法はありますか?

5
端末間でコピーする方法は?
Linuxシステムを使用しています。2つのvimが2つのターミナルで開かれます。次に、AからBにテキストをコピーします。そのための1つの方法は、Aでテキストを選択し、マウスを使用してコピーしてからBに切り替え、挿入モードでコマンド<c-r>+を使用してテキストを貼り付けることです。 とにかくマウスを使わずに実行することはありますか?"+yyAのように、Bに切り替えると、o<c-r>+?私はいくつかの組み合わせを無駄に探索しました。そして、「端末間でコピー」を検索しましたが、何も見つかりませんでした。 ユーザ@statox、すなわち、ビジュアルモードを使用して、一つの解決策を提案しv$"+y、A、Bにスイッチにo<c-r>+。 vモードに入らずにAのテキストをコピーできる簡単な方法はありますか?確かにvモードに入るのにあまり多くのキーストライクは必要ありません。もっと良い方法があるかどうか疑問に思います。例えば。カーソルが行の中央にある場合、行yy全体を(registerに")コピーしますが、0v$y追加のキーストロークで同じことを行います。 それとも、私の質問は、より少ないキーストロークでどのような方法がある場合に減少させることができる0v$"+yためコピー私が使用できるように<alt-tab>o<c-r>+貼り付けます。


3
テキストを1つのレジスタから任意の数のレジスタに移動するにはどうすればよいですか?
レジスタから別のレジスタまたはレジスタセットにテキストを「パイプ」する方法はありますか?例えば、移動"qレジスタに"1スルー"5。 同じマクロのわずかに異なるバージョンを作成したいことがよくあるので、「テンプレート」マクロを複数のレジスタにコピーして、それぞれを適切に変更できると便利です。 実用的な例を示すために、ここで私にこの質問を促した問題があります。 次の行をハードウェア記述言語から多くの繰り返しブロックに変換する必要があります。 RAM64(in=in, load=load0, address=address[0..5], out=out1); に RAM64(in=in, load=load1, address=address[0..5], out=out2); RAM64(in=in, load=load2, address=address[0..5], out=out3); RAM64(in=in, load=load3, address=address[0..5], out=out4); RAM64(in=in, load=load4, address=address[0..5], out=out5); yypW^At)^Aregisterに保存したインクリメント関数を使用して、これを実行するマクロがあります"a。 時々、次のようにインクリメントのパターンが少し異なる必要があります RAM512(in=in, load=load1, address=address[0..8], out=out2); RAM512(in=in, load=load2, address=address[0..8], out=out4); RAM512(in=in, load=load3, address=address[0..8], out=out6); RAM512(in=in, load=load4, address=address[0..8], out=out8); ここで、レジスター内のマクロはに"bなりますyypW^At)^A^A。 レジスターでこれを行いたいのですが、1から5までの増分ごとに行います。レジスタ"aは(どういうわけか)レジスタbからeにコピーできます。次に、各レジスターをバッファーに貼り付け、必要な変更を加え(項を追加し、tモーションに従うキャラクターを変更し)、変更した式をヤンクしてレジスターに戻します。理想的には、この最後のステップをレジスタにコピーするコマンドに含めることもできます これにより、変更する必要のないマクロ内のすべての文字を繰り返す必要がなくなります。私の例では、それは些細なことかもしれませんが、私が求めていることを実行することが非常に役立つかもしれないときを予測することができます。


4
neovimでは、エディターインスタンス間でレジスターを共有するにはどうすればよいですか?
vimには、異なるvimクライアント間でのレジスタ共有を可能にするクライアント/サーバー分割があったことは知っていますが、neovimで同じことをどのように実現しますか?クライアント/サーバーフラグはサポートしていません。私はこの質問を見ましたが、私の目標は特にレジスタを共有することであり、クライアント/サーバーの残りの部分を模倣することではありません。neovimリモートのようなものが唯一の方法ですか、それとももっと簡単な方法がありますか?

4
()内のテキストを以前にヤンクしたテキストに置き換える方法は?
Fnord前にテキストをヤンクしていて、カーソルが行のにあると仮定しますB。 M:mock(Baz) ()内のテキストを以前にヤンクしたテキストに変更するにはどうすればよいですか? 現在、私はしばしば次のようにして間違いを犯します: di( 別名「内部の削除()」 SHIFT + P 削除されたテキストはレジスタに移動されるため、正確なテキストが再び残ります。 欲しい: M:mock(Fnord)

1
*および+レジスタのカスタムコマンドを定義する
このxterm_clipboard機能を備えたVimのビルドを使用している場合、システムクリップボードのコンテンツは+レジスターから入手できます。 私が使用しているビルドにこの機能がない場合、"+システムクリップボードを取得および設定するために、registerにカスタムプログラムを呼び出させることができますか(xsel -boおよびxsel -bi、または同様にxclip)?同様にして"*、コールへxsel -poとxsel -pi。 ポイントは"+p、機能が利用可能かどうかを心配することなく、何かのようにタイプできることです。タイピングは、:r !xsel -b<Enter>私が探しているものではありません。私は仕事に同じキーストロークをしたい、と私はペーストが「真」のレジスタのために利用できるものをフォローするバリアントたい(P、gp、...)。 おまけ:他のレジスタ名にカスタムコマンドを定義できますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.