Bash

如何在 VIM 中連結外部命令?

  • January 10, 2018

如果我在 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() {'

如何正確連結 2 個命令,以便第一個將 VISUAL 選擇複製到系統剪貼板,第二個通過使用對其進行評估eval

試試這個:

'<,'>w !xclip | eval "$(xclip -o)"

!需要使用一次,vim 會將命令作為一個命令執行。

:'<,'>!xclip && eval "$(xclip -o)"

在我的測試中執行得非常好(Ubuntu 16.04 LTS,帶有 bash 4.3,vim 7.4),並將 4 行轉換為單個字元“f”。儘管不推薦,但替換&&為也可以。|

我不認為使用 vim 執行 shell 命令與在通常的 shell 中執行有很大不同,而且不應該如此。

引用自:https://unix.stackexchange.com/questions/416087