不幸的是,我需要重新审视五年前的问题:
对此,目前还没有答案。
我现在使用 CopyQ 作为剪贴板管理器,它对于大多数事情来说都工作得很好。
来自 CopyQ 常见问题解答:
https://copyq.readthedocs.io/en/latest/faq.html#how-to-store-only-plain-text
不幸的是,这个解决方案根本行不通。我在 LibreOffice 中创建一个文档,更改字体和字体大小,从 LibreOffice 复制并粘贴到 gmail 中,它保持相同的字体和字体大小。
我绝不希望这一切发生。我希望复制/粘贴仅是纯文本每时每刻。
过去五年我的解决方法是粘贴到 vim 中,然后再次复制,这显然既耗时又令人沮丧。
这里有什么解决办法呢? x.org 级别的东西是理想的,因此它将独立于剪贴板管理器(并且无需任何剪贴板管理器即可工作)。
我也不需要任何额外的键盘快捷键,只需像往常一样简单的 ctrl+c、ctrl+v 即可。
答案1
如果只有少数程序受到影响,您可以重新绑定粘贴命令。例如,LibreOffice 可以选择粘贴为纯文本。其他程序可能有类似的选项。
我没有找到任何能够转换为纯文本的剪贴板管理器,尽管我隐约记得过去有一些具有这种能力。一些剪贴板管理器能够运行操作,但我不知道如何使它们自动运行。
所以你只能自己尝试去做。在大多数情况下,以下命令会将剪贴板内容转换为纯文本。主要的例外是图像数据。
xclip -o -selection "clipboard" | xclip -i -selection "clipboard"
因此,您可以运行一个脚本来检查剪贴板是否有更改并自动清理内容。如果您使用剪贴板管理器,这将创建重复的条目。分为格式化版本和非格式化版本。
#!/usr/bin/env bash
while true ; do
clipsum_new=$(xclip -o -selection "clipboard" 2> /dev/null | md5sum --)
if [[ $clipsum_new != $clipsum_old ]] ; then
echo "Clipboard contents changed."
clipboard=$(xclip -o -sel "clipboard" 2> /dev/null)
if [[ $clipboard == "" ]] ; then
echo "Clipboard empty or contains non-text data."
elif [[ $clipboard =~ ^/.* ]] ; then
echo "Clipboard may contain file paths."
else
echo "Sanitizing clipboard"
xclip -o -selection "clipboard" | xclip -i -selection "clipboard"
fi
# save new checksum for future comparison
clipsum_old=$(xclip -o -selection "clipboard" 2> /dev/null | md5sum --)
fi
# limit polling rate
sleep 1
done