私はレコードに改行を追加するのが好きではないので、入力する前にバックスペースキーを押す必要があることがよくあります。これを自動的に行う方法があるかどうか疑問に思います(末尾の改行を削除)。
また、時には貼り付けたコマンドを送信する前に編集する必要があるため、角かっこ貼り付けを無効にしたくありません。
コピー:
下のコードブロックを3回クリックすると、末尾の改行を含む行全体が選択されます。
cd /tmp
これをコピーしてZSHに貼り付けます。角カッコの貼り付けを無効にしないと実行されません。今履歴ファイルを見る
cat $HISTFILE | tail -3
次の内容が表示されます。
: 1646582294:0;cd /tmp\
: 1646582296:0;cat $HISTFILE | tail -3
UPキーを押すと、改行が維持されていることがわかります。
私のzshrcファイルを見つけることができますここ。私が逃したことがあれば申し訳ありません。
答え1
bracketed-paste
貼り付けたテキスト(存在する場合)から末尾の改行を削除するように、いつでもzleウィジェットをオーバーライドできます。
bracketed-paste() {
zle .$WIDGET && LBUFFER=${LBUFFER%$'\n'}
}
zle -N bracketed-paste
答え2
私はzshユーザーではありませんが、これを.zshrcに入れてみてください。
zshaddhistory() {
setopt LOCAL_OPTIONS
setopt EXTENDED_GLOB
print -sr -- "${1%%$'\n'##}"
fc -p "$HISTFILE"
return 1
}
これにより、末尾の改行がすべて削除されます。必要なものを達成するために必要な場合は修正してください。秘訣はzshaddhistory
フック。