如果我在 VISUAL 模式下在 VIM 缓冲区中选择以下文本
f() {
echo "f";
}
f
然后执行
:'<,'>w !xclip | !eval "$(xclip -o)"
我明白了
/bin/bash: eval: line 3: syntax error near unexpected token `('
/bin/bash: eval: line 3: `feval f() {'
如何正确链接这两个命令,以便第一个命令将 VISUAL 选择复制到系统剪贴板,第二个命令使用 对其进行评估eval
?
答案1
尝试这个:
'<,'>w !xclip | eval "$(xclip -o)"
需要!
使用一次,vim 会将命令作为一个命令运行。
答案2
:'<,'>!xclip && eval "$(xclip -o)"
在我的测试中运行得非常好(Ubuntu 16.04 LTS,带有 bash 4.3,vim 7.4),并将 4 行转换为单个字符“f”。替换&&
为|
也可以,但不建议这样做。
我不认为使用 vim 运行 shell 命令与在通常的 shell 中运行有什么不同,而且也不应该如此。