Clipboard

從“剪貼板”中刪除尾隨的新行以防止在終端上執行?

  • June 21, 2021

有什麼方法可以通過某種過濾器執行您複製到“剪貼板”的任何內容嗎?理想情況下從您複製的內容中刪除尾隨換行符,以便它不會在終端中自動執行?

這就是我複制相關測試時的樣子,有時我會忘記這是一個新行。

在此處輸入圖像描述

良好的現代終端支持括號粘貼:當您使用終端的粘貼命令時,它會在剪貼板內容周圍發送特殊的轉義序列。如果您的 shell 支持括號粘貼,它將按原樣粘貼剪貼板內容,包括任何控製字元,特別是尾隨換行符不會觸發命令的執行。

Zsh ≥5.1 支持括號粘貼,預設開啟。可以教授舊版本。如果添加set enable-bracketed-paste on到.bash ≥4.4 支持括號粘貼~/.inputrc

如果您的終端或 shell 不支持括號粘貼,您可以定義一個不帶尾隨換行符粘貼的 shell 函式。

在 zsh 中,以下命令呼叫剪貼板的內容,減去尾隨的換行符,然後將其打開以進行編輯(即使有多行):

print -z -- "`xsel -b`"

在 bash 中,您可以將剪貼板的內容減去尾隨換行符推送到歷史堆棧。在此之後,按Up調出命令進行編輯。

history -s -- "`xsel -b`"

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