我需要一個快捷方式來從目前選取的文字中刪除換行符。我想將我的命令放入 KDE 全域快捷方式中,我已經知道該怎麼做。我想出的命令是:
sh -c 'xclip -o -sel p | tr -d "\-\n" | tr "\n" "\ " | xclip -sel c; xdotool key --clearmodifiers ctrl+v'
其目的是獲取當前選擇並將其通過管道tr
刪除行尾連字符(並連接片段),然後用空格替換剩餘的換行符,然後將其放入剪貼板並粘貼(無論焦點在哪裡) )。
問題:它沒有用空格替換換行符 tr "\n" "\ "
。它沒有這樣做,而是什麼都不替換換行符。我嘗試了各種空間表現形式,但沒有一個有效
我嘗試過xdotool type
,但這會吃掉所有空白並一起運行所有內容,即使不使用tr
.
我更願意使用選擇(主要或次要)而不是剪貼板,如果可能的話不必使用xdotool key ctrl+v
。如果我可以xdotool
完全避免,因為根據我的經驗,它處理空白的方式是意想不到的,那就更好了。
我還沒有xvkbd
安裝,而且我不想安裝它。但是,如果有幫助,我可以安裝複製q,python-pyperclip, 或者xorg-x剪貼簿。我還可以考慮主要 Arch 儲存庫中的其他工具。
答案1
這是我想出來的:
sh -c 'xclip -o -sel p | perl -p -e "s/-\n//g"| tr "\n" " "| xclip -sel c; xdotool key --clearmodifiers ctrl+v'
我用 perl 替換了第一個tr
。我意識到將tr
序列-\n
視為兩個獨立的字元而不是字串。
我在這裡找到了 perl 建議:
https://stackoverflow.com/a/7697604/463994
可能有一種方法可以使用單一 perl 命令來完成此操作,但我不知道。我會接受更好的答案。
編輯:這是更好的解決方案,感謝 Rakesh Sharma(見評論):
sh -c 'xclip -o -sel p | perl -pe "s/-\n// || s/\n/ /" | xclip -sel c; xdotool key --clearmodifiers ctrl+v; xdotool key Alt'
我新增是xdotool key Alt
因為我有綁定到 Alt 鍵組合的快捷方式,並且需要清除 Alt 鍵。