Zsh
從 ZSH 中的粘貼文本中修剪尾隨換行符
我不喜歡將尾隨換行符添加到我的歷史記錄中,因此我經常需要在輸入前輸入退格鍵。我想知道有沒有辦法自動執行此操作(刪除尾隨換行符)。
我也不想禁用括號粘貼,因為有時我需要在送出之前編輯粘貼的命令。
複製:
三擊下面的程式碼塊,然後您將選擇包括尾隨換行在內的整行。
cd /tmp
將其複制並粘貼到您的 ZSH,除非您禁用括號粘貼,否則它不會執行。現在查看歷史文件
cat $HISTFILE | tail -3
你會看到這樣的東西:
: 1646582294:0;cd /tmp\ : 1646582296:0;cat $HISTFILE | tail -3
如果按 UP,您將看到換行符已保留。
我的 zshrc 文件可以在這裡找到。如果我錯過了什麼,我很抱歉。
您始終可以重新定義
bracketed-paste
zle 小元件,以便它從粘貼的文本中刪除尾隨換行符(如果有):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
。