挿入モードで貼り付けますか?


回答:


465

挿入モードでヒット CTRL-R {register}

例:

  • CTRL-R * クリップボードの内容に挿入します
  • CTRL-R " (名前のないレジスタ)は、最後の削除またはヤンクを挿入します。

vimのヘルプでこれを見つけるには :h i_ctrl-r


13
ええ、CTRL-Rについて最近知ったばかりで、非常に便利です。
ダン

16
CTRL-R *GVIMまたはxと対話するようにコンパイルされたバージョンでのみ機能します。入力してvim --versionを探します+xterm_clipboard。それがない場合は、別のバージョンのvimが必要です。(vim.wikia.com/wiki/Accessing_the_system_clipboard
Conrad.Dean

10
実際に必要なのはだけですが+clipboard、持っている+xterm_clipboard場合はとにかくそれが必要です。一部のOSではxterm_clipboard適用されません。
アンドリューマーシャル

1
うーん、C-r +を使用してWindowsのシステムクリップボードから貼り付けます(GVimポータブルを使用)。*登録について聞いたことがない。
kitsu.eb 2012

6
@ kitsu.eb Xシステムでは、従来のコピー/貼り付け*と同じように、中央マウスクリックで登録できます+standards.freedesktop.org/clipboards-spec/clipboards-latest.txt
amc

235

Vimが受信した貼り付けられたテキストのフォーマットを壊したくない場合は、次の使用を検討することもできます:set paste。これにより、Vimがコードを再タブ化するのを防ぎます。貼り付け:set nopasteが完了すると、通常の動作に戻ります。

set pastetoggle=<F2>.vimrcに次のようなものを追加することで、単一のキーでモードを切り替えることもできます。自動インデントの切り替えの詳細については、こちらをご覧ください


47
:set nopaste貼り付けモードが無効になります
James Snyder

24
@JamesSnyderより良い方法は、:set paste!おそらく貼り付けがコマンド履歴で非常に近いため、「:」を押してから上向きにして「!」を追加するだけです。
Rafael Barbosa

6
ちょうど好奇心が強い- :set paste! おかげで何が良いのか、違うのか:)
マイケル・デュラント

33
!で、コマンドの最後にvimオンとオフを切り替えるコマンド。このように入力する必要はなく:set nopaste、履歴を上にスクロールして、同じコマンド(:set paste!)を再度実行できます。
에이바2013

3
@blockloop貼り付けるときに有効にし、直後に無効にする必要があります。
NieDzejkob 2018

125

いいえ、直接ではありません。 ただし、実行できるのは、単一の通常モード操作で挿入モードをすばやく終了しCtrl-O、そこから貼り付けて、挿入モードに戻すことで終了します。

キーコンボ: Ctrl-O p

編集:興味深い。他の何人かの人々が挙げた方法があるようです。


2
CTRL-Rは、「私のための作業(OS XのターミナルでVI)ないCTRL-O Pました。。
ボブ・

4
これは覚えるのに最も速くて簡単な方法です。
pinpox 2014

どうesc + pですか?
2017

2
間違いなくより速くesc + p + i、間違いなくタイプするのは簡単ですCTRL-R + "
lucidbrot 2018年

実際、これはとは異なる動作をする場合がありCTRL-R "ます。たとえば、vimrc設定はこれを変更できますが、を使用して新しい行に何かを貼り付けるCTRL-O pと、インデントがなくなります。
noname 2018

30

挿入モードでCtrl-R {register}は、レジスタを次のように使用できます。

  • + クリップボードの場合、
  • * Xクリップボード(Xで最後に選択されたテキスト)
  • " 名前のないレジスタ(Vimでの最後の削除またはヤンク)の場合、
  • または他のいくつかの(を参照:h registers)。

Ctrl-R {register} 入力したようにテキストを挿入します。

Ctrl-R Ctrl-O {register} 元のインデントでテキストを挿入します。

Ctrl-R Ctrl-P {register} テキストを挿入して自動インデントします。

Ctrl-O挿入モードに戻る前に通常モードのコマンドを実行するため
Ctrl-O "+pに使用できるため、たとえば、使用することもできます。

詳細については、次のドキュメントを参照してください。 :h i_ctrl-r


4
この答えが最も包括的なようです。それは非常に明確で、私の意見では、最も役に立ちます。それはOPの質問に答え、次にいくつかを簡潔に答えます。
Devvyn 2015年

26

これを使用してクリップボードから貼り付けることができますCtrlv

set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>

そして、これはビジュアル選択をクリップボードにヤンクするためのものですCtrlc

vnoremap <C-c> "+y

通常モードでクラシックvimのヤンク/貼り付け(y/ p)にデフォルトでクリップボードも使用する場合は、次の設定オプションを使用します。

set clipboard=unnamedplus

この設定を使用すると、たとえば通常モードで最初にヤンクし、次にCtrlv挿入モードで貼り付けることができます。また、さまざまなvimインスタンスやさまざまなアプリケーションからテキストを貼り付けることもできます。

別のオプションは次のとおりです。

set clipboard=unnamed

次に、X環境でマウスをドラッグして何かを選択し、後でvimに貼り付けることができます。しかし、(何らかの理由で)yVimで何か()をヤンクすることはできず、shiftinsertその後、どこかでヤンクすることはできません。

これに関するVimのドキュメント:http : //vim.wikia.com/wiki/Accessing_the_system_clipboard

カスタムレジスタからの貼り付けについては、他の回答に従うことができます。この答えは主にVimをシステムのクリップボードと統合することです。


用することを注意set clipboard=unnamedplusしてset clipboard=unnamed仕事に、あなたがgvimをかvimxを(使用する必要がありますvim-X11):これらがコンパイルされています+xterm_clipboard。オプションで、あなたにこれを置くことができる.bashrcエイリアスにvim持ちますvimx

if [ -e /usr/bin/vimx ]; then
    alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard
fi

+xterm_clipboard提供する情報にvimがあるかどうかを確認できますvim --version


7
これはまさに私が探していたものです。これは、ここでの唯一の合理的な答えでもあります。これは、物事が機能することを期待する方法です。:set pasteとビザンチンのデフォルトの動作が<leader><leader> * yリモートでさえ望ましい理由を誰かが知っていますか?あまりにも熱心に聞こえないように、私はこれがどのvim哲学を反映しているのか、またはそれが単なる歴史的な不幸なのかどうかを本当に知りたいと思っています。
Aeschylus 2013

あなたの答えにより、GvimでShift + Insert inoremap <S-Insert> <F12><C-r>+<F12>を使用することもできました(私はF12をペーストトグルとして使用しています)。ありがとう。
sromero

20

システムクリップボード(:set clipboard=unnamed)を使用するようにVimを設定すると、VimでコピーしたテキストはShift+ を使用して貼り付けることができますInsertShift+ Insertは単にOS全体の貼り付けキーの組み合わせです(Ctrl+ Insertは対応する「コピー」です)。


1
S-Insertについては知りませんでした:)
BandGap

これは逆に機能しますか?ウィルpクリップボード内のテキストを貼り付けますか?
Zaz 2015

を使用Shift + Insertしてテキストを貼り付ける前に、挿入モードにする必要があります。
jdhao 2018

18

マウスの中央ボタンを使用して、挿入モードで貼り付けることもできます(Linuxのみ)。


106
あなたが話しているこのマウスは何ですか?
ジムミッチェナー

19
あなたが話すこれらの非Linux OSは何ですか?
Bruno Bronosky 2013

-1:この答えは、ハードウェアと端末の設定に大きく依存します。最終的に、マウスのボタンはプリセット文字列をターミナルに送信し、ターミナルはその文字列を解析して特定のコマンドを実行します。問題は、これは端末の設定によって大きく異なる可能性があることです。この回答を改善するには、少なくとも端末のバージョン、OS、使用しているマウスのバージョンとモデルをお知らせください。
melvynkim 2014年

マウスの中ボタンの貼り付けは、すべてのLinuxアプリケーションでかなり一般的であり、端末やOSのバージョンに制限されません。
lcltj 2014年

Arch Linux + urxvtでは機能しません。新しい行のみを追加します。
zygimantus

5

次の-- INSERT (past) --方法でモードに入ることができます:

  • キーボードコンボ: y p

または

  • :set paste挿入モードに入る(:set nopaste無効にする)

一度-- INSERT (past) --モード単にあなたのシステムを使用します(例:関数を貼り付けるCtrlShiftvLinux上で、CmdvMac OSの上で)。

この戦略は、sshでvimを使用する場合に非常に役立ちます。


4

はい。Windows Ctrl+ VおよびLinuxでは、両方のマウスボタンをほぼ同時に押します。

Windowsでは、_vimrcの次の行がおそらくそれを行うと思います。

source $VIMRUNTIME/mswin.vim

Linuxでは、自分がどのようにしたか覚えていません。おそらく、デフォルトの.vimrcファイルからいくつかの行を削除したようです。


複数回投票できますか?別のウィンドウから来たときだけ貼り付けたいので、常にマウスを使います。鮮やかさ!
dave、2012

Linuxでは、マウスの中央ボタンを押して貼り付けます。2ボタンマウスがあり、左ボタンと右ボタンの両方を押す場合、この方法で動作させるには「Emulate3Buttons」などが必要です。
クーガー

0

挿入モードで貼り付け

この場合、カスタムマップが適切と思われます。これは、挿入モードでヤンクアイテムを貼り付けるために使用するものです。

inoremap <Leader>p <ESC>pa

私のLeader鍵はここにあります\。つまり\p、挿入モードでヒットすると、以前にヤンクされたアイテム/行が貼り付けられます。


0

地図を追加するだけです:

" ~/.vimrc
inoremap <c-p> <c-r>*

vimを再起動しCrtl+p、挿入モードで押すと、コピーしたテキストが貼り付けられます

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