我正在尝试使用此键绑定来提取没有尾随和标题空格的字符串:
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,除了额外的\s
OP 的原始正则表达式是 GNU sed 的有效 BRE。