在 tmux 复制模式下猛拉修剪过的字符串

在 tmux 复制模式下猛拉修剪过的字符串

我正在尝试使用此键绑定来提取没有尾随和标题空格的字符串:

bind-key -T copy-mode-vi z send-keys -X \
copy-pipe 'sed "s/^[[:blank:]]\+//;s/[[:blank:]]\+$//" | xsel -ib' 

但它不起作用,xsel -ob输出带有空格的字符串。 GUI 应用程序中的 Ctrl+V 也是如此。为什么?我怎样才能实现所需的功能?

tmux 2.6, set-clipboard off

编辑:我测试了我的 sed 表达式并且它有效:

igor@igor-ideapad:~$ echo "   hello world    " | sed "s/^[[:blank:]]\+//;s/[[:blank:]]\+$//"
hello world

答案1

在第一个 + 之前有一个额外的 \ ,并且字符类是扩展的正则表达式功能,因此您需要使用sed -E(对于 BSD sed)或sed -r(对于 GNU sed)。我不知道你为什么要这么做[[:blank:]\s但我认为你不需要它们。

您可以从命令行使用 sed 测试您的正则表达式:

printf ' abc '|sed -E "s/^[[:blank:]]+//;s/[[:blank:]]+$//"|wc -c
       3

编辑:实际上我太习惯使用 ERE 和 BSD sed,除了额外的\sOP 的原始正则表达式是 GNU sed 的有效 BRE。

相关内容