web-dev-qa-db-ja.com

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

いくつかのコンテンツ(CentOSサーバーのGit Bash内)をvimを使用してファイルに貼り付けてみました。
ファイルを開いて使用しようとしました shift+insert そして、前半が(大体)途切れるのに気づきましたが、vimを挿入モードに設定してヒットすると shift+insert すべてが完全に貼り付けられます。
これがなぜなのか疑問に思いましたか?

ありがとう

13
treyBake

両方とも ShiftInsert また、「pasting」をターミナルに入力すると、キーの押下をエミュレートします。

これは重要な違いであり、多くの場合、端末では作成できません。入力または貼り付けを行っていますか? :一部の端末では、@ Joshの後に「ブラケット貼り付け」モードがサポートされていますコメント vimプラグインxterm に括弧で囲まれた貼り付けに出くわしたかもしれません。

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

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


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

hello how are you

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

result of pasting into Vim

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

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

/are
n

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

result of pasting into Vim

これを貼り付けます:

:0
dG

ああ...すべてがなくなった!

all gone


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

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

pasting code

これを修正するには、:set pasteおよび:set nopasteコマンド

pasting code (paste mode)

24
Attie