9

(たとえば) Acrobat Reader で開いた PDF から CTRL-V を使用して2 行のテキストを gvimにコピーすると、テキストはカーソルの位置ではなく、配置されていた gvim の行のに挿入されます。(シナリオ: 2 行にまたがるドキュメント タイトルをコピーして、gvim の html タグの間に貼り付けたい)。

1 行のテキストで同じことを行うと、テキストはカーソルの位置に正しく貼り付けられます。

2 行のテキストでも機能させるにはどうすればよいですか (たとえば、「書式なしで貼り付け」など)。

重要: 貼り付ける文字列は、キャリッジ リターン (または類似のもの) で区切られた 2 行で構成されます。

解決

実際には 2 つの有効な解決策があります。

  • CTRL-R * を使用してカーソル位置に貼り付けます (クリップボードの内容を複数行に保ちます)
  • 貼り付けコマンドの再マッピングを実行して、クリップボード文字列内のすべての改行を置き換えます
4

5 に答える 5

12

まず、VIM での貼り付けは通常 CTRL-V を使用して行われないため、CTRL-V が何かにマップされているようです (CTRL-V はビジュアル ブロックです)。

次に、表示されている動作は標準の vi[m] 動作です。1 つまたは複数の行全体をヤンクすると、貼り付けは常に現在の行の上または下に 1 つまたは複数の行になります。

あなたがやろうとしていることを達成するための組み込みの方法を知りません。しかし、いつでも CTRL-V をあなたが望むことをするものに再マップすることができます。

:map <C-V> i<CR><Esc>"*P

その後、カーソルがあった文字の間に複数の行を貼り付けますが、この再マッピングはおそらく他の場合には必要ありません。

編集

わかりました、別の方法を見つけました。

挿入モードで、次のように入力します。

CTRL-R *

これにより、クリップボード バッファの内容がカーソルのある場所に貼り付けられます。(これを使用して、他のバッファーの内容を貼り付けることもできます)

于 2009-09-29T12:12:23.200 に答える
2

レジスタから貼り付ける前にレジスタから改行を取り除きたい場合は、式 register を使用できます"=

:map <C-v> "=substitute(@*, "\n", " ", "g")<CR>p
于 2009-09-29T20:23:37.263 に答える
1
:set paste

何かをバッファに貼り付ける前に

:set nopaste

書式設定を復元するには

于 2009-09-29T10:33:54.163 に答える
1

ショートカットpP(カーソルの前後にそれぞれ貼り付けます) を使用します。システム レジスタの内容を指定するために追加"*します (この場合は Windows クリップボード)、または"+(UNIX の場合)。

したがって、次を使用できます。

  • "*pカーソルの前に貼り付け
  • "*Pカーソルの後に貼り付け
  • "*ycopy (視覚領域、または Vim に「何を」コピーするかを指示する接尾辞を取ります)
  • "*d切り取り (視覚領域、または接尾辞付き)

など。

于 2009-09-29T08:10:48.763 に答える
0

カーソルの位置で Windows クリップボードから gVim に貼り付けるには

"+gP
二重引用符を忘れないでください。

于 2009-09-29T10:31:46.470 に答える