追加読書

追加読書

zshを使用しています。

zshウィンドウでコピーした内容を右クリックし、右クリックして貼り付けます。私はいつもいくつかの文字が欠けており、最後の文字の大文字と小文字が変わる場合があります。

例えば

echo this is a long message

次に貼り付け

(empty line)

this is a long messaG

そして

vim hello.txt

~になる

m hello.tX

原因は何ですか?解決策は何ですか?

答え1

これには2つの理由があります。

  • 何か(おそらくZシェル)に端末を開くように指示します。かっこ内に貼り付ける
  • Zシェルの使用法vicmdまたはviinsキーマップ。

何が起こるのか?

  1. Zシェルが起動し、端末エミュレータで角かっこで囲まれた貼り付けを開くように制御シーケンスを実行します。あるいは、テキストエディタはある時点でこれを実行しましたが、何らかの理由で再び閉じる制御シーケンスを実行できなかった可能性があります。
  2. あなたは何かを貼り付けます。
  3. 端末エミュレータは、角かっこ貼り付け制御シーケンスの開始、貼り付けるテキスト、および角かっこ貼り付け制御シーケンスの終わりを送信します。
  4. 最初の角かっこ貼り付け制御シーケンスの最初の文字はESCで、ZLEのvi挿入モードをキャンセルしてZLEのviコマンドモードに戻ります。
  5. 後続の文字はviコマンドであり、文字またはoに達してi挿入モードに入るまで多くのことは行いません。
  6. 残りのテキストは挿入モードで挿入されます。
  7. 末尾の括弧の貼り付け制御シーケンスの最初の文字はESCで、ZLEのvi挿入モードをキャンセルしてZLEのviコマンドモードに戻ります。
  8. 制御シーケンスの後続の文字はほとんど影響を及ぼさない。
  9. 閉じ括弧の貼り付け制御シーケンスの最後の文字は、大文字と小文字を~置き換えるコマンドですvi。これにより、貼り付けたテキストの最後の文字が大文字と小文字に変わります。

次の 2 つの方法のいずれかでこの問題を解決できます。

  • vicmd/キーマップはそれを処理するように構成されていないため、Zシェルが角かっこで囲まれた貼り付けを開くのを防ぎますviins
  • vicmd/ keymapで角かっこで囲まれた貼り付けが機能するようにしますviins。これを行う方法は、最初にZシェルが括弧内のペーストを認識するようにした方法によって異なります。プラグインsafe-pasteはemacsキーマップを使用し、viキーマップとうまく機能するように調整する必要があります。しかし、これが現在Zシェルからブラケットペーストを得る唯一の方法ではありません。

追加読書

関連情報