저는 Vim 초보자입니다. 현재 버퍼의 내용을 외부 명령의 stdin으로 보내고 싶습니다 (메일이라고 말할 수 있음). 마지막 목적은 현재 Vim 버퍼에서 이메일을 빠르게 보내는 단축키를 설정하는 것입니다. 이것은 사소한 일이라고 생각하지만 Vim 버퍼를 외부 명령으로 보내는 방법을 찾을 수 없습니다. 미리 감사드립니다.
답변:
를 사용 :w !cmd
하여 외부 명령의 표준 입력에 현재 버퍼를 쓸 수 있습니다 . 에서 :help :w_c
:
: [범위] w [라이트] [++ opt]! {cmd}
표준 입력
{cmd}
으로[range]
줄을 사용하여 실행합니다 (앞의 공백에 유의하십시오'!'
).{cmd}
와 같이 실행":!{cmd}"
되며 any'!'
는 이전 명령으로 대체됩니다|:!|
.
관련 명령은 :%!cmd
동일한 작업을 수행 한 다음 현재 버퍼를 명령의 출력으로 대체하는 것입니다. 따라서 :%!sort
외부 정렬 명령을 호출하여 현재 버퍼를 제자리에 정렬합니다.
:'<,'>!python -mjson.tool
또는:%!python -mjson.tool
:%!gofmt
경우 마지막을 사용 하지 않고 %
사용하면 저장된 버전이 사용됩니다 (현재 버퍼와 다를 수 있음).
u
실행 취소
다음은 명령 줄에서 현재 버퍼를 외부 stdin으로 보내는 방법의 예입니다.
vim -es +"w >> /dev/stdout" -cq! /etc/hosts
스크립팅 목적으로 유용합니다.
더 많은 명령 줄 트릭은 다음을 확인하십시오.
STDIN
를 셸 명령 으로 제공하기위한 관련 질문 : Pipe to shell 및 정보 라인에서 출력 수신 및 선택한 원본 텍스트를 출력으로