17

Vim での貼り付け機能の使いやすさを改善しようとしています。これは、あまりにも多くの異なる削除操作 (実際にはすべてだと思います) も貼り付けバッファーにヤンクするためです。

これが意味することは、どこかに貼り付けたいテキストの一部を削除し、何かをクリーンアップしてから貼り付けを行うことができなくなったことです。なぜこれが私が好む順序なのかはわかりませんが、変更するつもりはありません。

基本的に、クリーンアップに戻る前に「アトミックに」移動する必要があります。そうしないと、カンマ、ブラケット、またはスペースのイライラする貼り付けが発生します。ああ、私はそれを別の順序で行う理由を知っています。それは単により効率的です。目的地に移動して、片付けに戻って、また戻る必要はありません。

これを改善するにはどうすればよいですか?私の提案は、事後に貼り付け操作を強化するために使用できるプラグインです。hit p、役に立たない一時的な削除された文字が貼り付けられていることを確認します。この時点 (貼り付け操作の直後) で、プラグインはキーが以前に削除ヤンクされたレジスタを循環し、貼り付けを更新します。

このようにして、必要なものをすべて削除できます。また、最近削除されたアイテムが連続したセグメントである限り、実際にすばやくプルアップすることができます。もちろん、視覚的な選択に続いて削除することで簡単に設定できます。特定の貼り付けに使用する特定の名前付きレジスタを指定することを覚えておく必要がなくなるため、これは使いやすさと引き換えに具体的です。

特に、ヤンクと削除の両方が蓄積されるスタックが存在する必要があります。スタックは、後で単一のバインドを使用して貼り付け中にすばやくトラバースされます。

すでにこれを行うプラグインはありますか?

4

3 に答える 3

7

名前付きレジスタを使用しないのはなぜですか? たとえば、"ayをヤンクして登録しa"ap後で再度貼り付けるために使用します。その間、通常の削除などによって上書きされることはありません。

于 2013-06-09T20:21:03.207 に答える
5
[l]orem ipsum dolor sit amet

    yiw yanks "lorem" in @" and @0

lorem [i]psum dolor sit amet

    daw deletes "ipsum " into @", @0 still contains "lorem"

lorem dolor [s]it amet

    ciwfoo deletes "sit" into @" and inserts "foo", @0 still contains "lorem"

register0にはまだヤンクしたもの ( lorem) が含まれているため、何度も , , を実行した後でも、c何か他dのものを明示的にヤンクするまで常に貼り付けられます。s"0plorem

私の例では、Vim が「小さな削除」と呼んでいるものだけが含まれているため、番号付きレジスタは使用されません。より大きな操作を行う場合、Vim もレジスタを使用しますが、常に最新の明示的なヤンクを保持するレジスタ1-9の動作は変更しません。0

:h registersVim には多くの機能があり、プラグインがすべての答えになるわけではありません。

また、ブラックホールレジスターを示唆している私のこの回答を参照してください。

于 2013-06-10T05:36:01.747 に答える