将某些内容复制到剪贴板后(使用 ctrl+c),我希望一个脚本(bash、python 或任何其他语言)自动检测新条目是否添加到剪贴板,更改其内容并将其放回剪贴板,这样当我粘贴它时,我就会得到修改后的文本。该脚本应在后台持续运行并监视剪贴板的更改。
以下脚本描述了所需的修改:
来源:https://superuser.com/questions/796292/is-there-an-efficient-way-to-copy-text-from-a-pdf-without-the-line-breaks
#!/bin/bash
# title: copy_without_linebreaks
# author: Glutanimate (github.com/glutanimate)
# license: MIT license
# Parses currently selected text and removes
# newlines that aren't preceded by a full stop
SelectedText="$(xsel)"
ModifiedText="$(echo "$SelectedText" | \
sed 's/\.$/.|/g' | sed 's/^\s*$/|/g' | tr '\n' ' ' | tr '|' '\n')"
# - first sed command: replace end-of-line full stops with '|' delimiter and keep original periods.
# - second sed command: replace empty lines with same delimiter (e.g.
# to separate text headings from text)
# - subsequent tr commands: remove existing newlines; replace delimiter with
# newlines
# This is less than elegant but it works.
echo "$ModifiedText" | xsel -bi
我不想使用快捷键绑定来运行脚本。
答案1
功劳归于肯恩。
我根据自己的要求修改了脚本,并添加了检测剪贴板复制事件并修改其内容的功能。
来源。
从 PDF 复制文本时删除换行符(Linux)
此 bash 脚本可在从 PDF 复制文本时删除换行符。它适用于 Linux 的主选择和剪贴板。
#!/bin/bash
# title: copy_without_linebreaks
# author: Glutanimate (github.com/glutanimate)
# modifier: Siddharth (github.com/SidMan2001)
# license: MIT license
# Parses currently selected text and removes
# newlines
while ./clipnotify;
do
SelectedText="$(xsel)"
CopiedText="$(xsel -b)"
if [[ $SelectedText != *"file:///"* ]]; then
ModifiedTextPrimary="$(echo "$SelectedText" | tr -s '\n' ' ')"
echo -n "$ModifiedTextPrimary" | xsel -i
fi
if [[ $CopiedText != *"file:///"* ]]; then
ModifiedTextClipboard="$(echo "$CopiedText" | tr -s '\n' ' ' )"
echo -n "$ModifiedTextClipboard" | xsel -bi
fi
done
依赖项
- 響鳴:
sudo apt install xsel
- 剪辑通知。您可以使用存储库中提供的预编译的 clipnotify,也可以自行编译。
自行编译 clipnotifysudo apt install git build-essential libx11-dev libxtst-dev git clone https://github.com/cdown/clipnotify.git cd clipnotify sudo make
使用
- 将此存储库下载为 zip 文件或将脚本复制并粘贴到文本编辑器中并将其保存为 copy_without_linebreaks.sh。
- 确保脚本和 clipnotify(已下载或预编译)位于同一个文件夹中。
- 在脚本文件夹中打开终端并设置权限
chmod +x "copy_without_linebreaks.sh"
- 双击脚本或者在终端中输入来运行:
.\copy_without_linebreaks.sh
- 复制 PDF 中的文本并将其粘贴到任意位置。换行符将被删除。