シフト挿入が挿入モードでのみ完全に機能するのはなぜですか?

シフト挿入が挿入モードでのみ完全に機能するのはなぜですか?

vim を使用して、コンテンツ (CentOS サーバーの Git Bash 内) をファイルに貼り付けようとしました。
ファイルを開いてshift+を使用しようとしたところ、最初の半分 (おおよそ) が切り取られていることに気付きました。ただし、vim を挿入モードに設定して+insertを押すと、すべてが完璧に貼り付けられます。 なぜそうなるのか疑問に思いました。shiftinsert

ありがとう

答え1

Shift+Insertと " の両方貼り付け" をターミナルに入力すると、同様に動作し、キーの押下をエミュレートします。

これは、端末では区別できないことが多い重要な区別です。入力しているのか、貼り付けているのか?注記: 一部の端末では「括弧付き貼り付け「モード」では、@Joshのコメントの後、vimプラグイン括弧で囲んだ貼り付けxtermあなたが興味を持つかもしれないもの。

貼り付けたデータは、挿入モードに入る最初の文字まで失われます。カーソルが移動し、ファイルの他の部分が変更されている場合もあります (例: 大文字と小文字の変更、削除など)...

要約すると、ファイルに挿入したいテキストを貼り付ける場合は、まず挿入モードに入ります。


次のテキストをコピーして、Vim を実行しているターミナル (挿入モードではない) に貼り付けてみてください。

hello how are you

結果は、キーボードで同じ文字を入力した場合と同じになります。

Vimに貼り付けた結果

この場合、挿入モードのままになります...

挿入モードを終了しEscて次のコードを貼り付けてみてください

/are
n

これは「are」の検索を実行します。

Vimに貼り付けた結果

これを貼り付けます:

:0
dG

ああ、だめだ... 全部なくなってしまった!

全部なくなった


また、インデントが有効になっている場合、コード ブロックを vim (挿入モード) に貼り付けると、インデントが過剰になることに気付くでしょう。vim は自動的にインデントし、貼り付けたコードにインデントが含まれます。

def my_print(message):
    print(message)
    print('done...')

コードを貼り付ける

これを修正するには、コマンド:set paste:set nopasteコマンドを使用します

コードの貼り付け(貼り付けモード)

関連情報