0

長さが異なる3行のテキストブロックをvimで取得しました。外部アプリケーション (Word やメモ帳など) から 3 行を含む別のデータ ブロックを取得し、これら 3 行すべてに追加して貼り付けたいと考えています。この問題に関するいくつかの投稿を見つけましたhttps://superuser.com/questions/300362/vim-how-to-paste-a-block-of-text-at-the-end-of-multiple-linesカットアンドペーストvim の複数行(複数回貼り付けも) ですが、コンテンツが最初に vim からヤンクされた場合にのみ機能するようです。clipboard=unnamedが設定されています。

これが私が達成したい例です(最初の投稿から盗まれました;-D):

//Comment1
//Comment2
//Comment3

外部アプリケーションからのデータブロック

foo = 1;
bar = 2;
baz = 3;

元データ

foo = 1; //Comment1
bar = 2; //Comment2
baz = 3; //Comment3

結果

4

3 に答える 3

2

Vim では、ヤンクされたテキストには、「文字単位」、「行単位」、または「ブロック単位」の 3 種類があります。Vim スクリプトを使用してレジスタの内容の種類を変更することは可能ですが、実際にはあまり実用的ではありません ( :help setreg())。

最も簡単な方法は次のとおりです。

  • これらのコメントを元のデータの上または下のどこかに貼り付けます
  • ヒット<C-v>してビジュアルブロックモードに入り、そのコメントブロックを選択します
  • を押しdて削除します
  • 元のデータの最初の行にカーソルを移動します
  • ヒットpして貼り付ける「ブロック単位」
于 2013-05-30T14:04:18.550 に答える
1

そのために、私のUnconditionalPaste プラグインを使用できます。レジスタがヤンクされたモードに関係なくgbp、貼り付けを強制的にblockwiseにするマッピングを提供します。(文字単位および行単位の貼り付けなどに関連する他のマッピングもあります!)

それを使用して、最初の行の最後にカーソルを置き、 を使用します"+gbp

于 2013-05-30T13:57:44.173 に答える