如何在 VIM 中链接外部命令?

如何在 VIM 中链接外部命令?

如果我在 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 中运行有什么不同,而且也不应该如此。

相关内容