Zsh

從 ZSH 中的粘貼文本中修剪尾隨換行符

  • March 7, 2022

我不喜歡將尾隨換行符添加到我的歷史記錄中,因此我經常需要在輸入前輸入退格鍵。我想知道有沒有辦法自動執行此操作(刪除尾隨換行符)。

我也不想禁用括號粘貼,因為有時我需要在送出之前編輯粘貼的命令。

複製:

三擊下面的程式碼塊,然後您將選擇包括尾隨換行在內的整行。

cd /tmp

將其複制並粘貼到您的 ZSH,除非您禁用括號粘貼,否則它不會執行。現在查看歷史文件

cat $HISTFILE | tail -3

你會看到這樣的東西:

: 1646582294:0;cd /tmp\

: 1646582296:0;cat $HISTFILE | tail -3

如果按 UP,您將看到換行符已保留。

我的 zshrc 文件可以在這裡找到。如果我錯過了什麼,我很抱歉。

您始終可以重新定義bracketed-pastezle 小元件,以便它從粘貼的文本中刪除尾隨換行符(如果有):

bracketed-paste() {
 zle .$WIDGET && LBUFFER=${LBUFFER%$'\n'}
}
zle -N bracketed-paste

我不是 zsh 使用者,但請嘗試將其放入您的 .zshrc

zshaddhistory() {
  setopt LOCAL_OPTIONS
  setopt EXTENDED_GLOB
  print -sr -- "${1%%$'\n'##}"
  fc -p "$HISTFILE"
  return 1
}

這應該刪除所有尾隨換行符。如果需要進行修改以完成您想要的。訣竅就在其中zshaddhistory

引用自:https://unix.stackexchange.com/questions/693118