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


13

vimを使用して、(CentOSサーバーのGit Bashの)一部のコンテンツをファイルに貼り付けようとしました。
私は、ファイルを開いて、使用してみましたshift+をinsert、私は最初の半分は(おおよそ)カットオフされることを気づいたが、私のセットvimの場合は、モードを挿入するとヒットshift+ insertすべてが完璧に貼り付けます。
これがなぜなのか疑問に思っていましたか?

ありがとう


ねえ、私も2つの親指を持っています!!! :D
ロンジョン

回答:


24

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

これは、端末が作成できないことが多い重要な区別です。入力または貼り付けをしていますか?:一部の端末は「ブラケットペースト」モードをサポートしていますが、@ Joshのコメントの後、xtermのvimプラグインブラケットペーストに出くわしました。

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

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


次のテキストをコピーして、Vimを実行している端末に挿入してください(挿入モードではありません):

hello how are you

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

Vimに貼り付けた結果

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

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

/are
n

これにより、「are」の検索が実行されます。

Vimに貼り付けた結果

これを貼り付けます:

:0
dG

ああ、いや...すべてがなくなった!

全部なくなった


また、インデントを有効にしている場合、vim(挿入モード)にコードのブロックを貼り付けるとインデントが大きくなりすぎます-自動インデントされ、貼り付けたコードにインデントが含まれます。

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

貼り付けコード

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

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


4
「これは、端末が作成できない重要な区別です。入力するのか貼り付けるのですか?」-これは完全に真実ではありません。一部の端末とアプリケーションは、貼り付けられたテキストの前後に特別なシーケンスが送信される「ブラケットペースト」をサポートします。
アッシュ

@Josh:面白い、感謝...あなたのコメントにもに私を導くvimのプラグイン
Attie

気になるのは私だけset nopasteですか?期待しunset pasteます。
エリックドゥミニル

代替手段としての@ThisGuyHasTwoThumbsは、少なくともVimを使用する場合は、"+レジスタを使用してシステムクリップボードとやり取りすることをお勧めします。欠点は、Vimの一部のシステムまたはビルドが"*代わりに使用するか、単にシステムクリップボードをサポートしていないことですが、私の経験で"+は非常に信頼できます。
8bittree
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.