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)"

내 테스트(Bash 4.3, vim 7.4가 포함된 Ubuntu 16.04 LTS)에서는 완벽하게 작동하고 4줄을 단일 문자 "f"로 변환합니다. &&로 교체하는 |것은 가능하지만 권장되지 않습니다.

나는 vim을 사용하여 쉘 명령을 실행하는 것이 일반 쉘에서 실행하는 것과 다르지 않다고 생각하며, 그래서도 안됩니다.

관련 정보