답변:
쉘 명령의 출력을 새로운 버퍼를 생성하는 명령으로 파이프 할 수는 없지만, 새로운 버퍼를 생성하고 Vim의 명령 행에 하나의 엔트리로 쉘 명령의 출력을 해당 버퍼로 읽을 수 있습니다. 귀하의 예제의 작동 버전은
:tabnew | r !echo <c-r>=bufname("#")<cr>
이 경우 파이프 기호는 쉘 파이프가 아닌 Vim ex 명령 사이의 구분 기호입니다. 참조
:help :tabnew
:help :r!
:help :bar
:r!echo
버퍼를 변경 하지 않고는 아닙니다 .
여기 내가하는 일이 있습니다. 위의 답변에 대한 의견에서 언급되었습니다.
:new | r ! <cmd>
:new | r ! <cmd> # (# is replaced with filename)
예 1 :에서 모든 텍스트 파일 찾기/tmp
:new | r ! find /tmp -name '*.txt'
예제 2 : foo.txt 파일을 편집 중이며 ls -la foo.txt
버퍼에서 출력 을 실행 하고 싶습니다 .
:new | r ! ls -la #
는 #
당신에게있는 거 편집 버퍼 원래의 파일 이름으로 대체됩니다. 이것은 특별 소스 제어 명령에 특히 유용합니다.
:new | r ! hg annotate -un #
:new
수평 분할을 생성합니다. :vnew
대신 수직 분할을 원할 경우 및 :tabnew
새 탭에 사용하십시오.
:tabnew | enew | r ! <your shell cmd>
나를 위해 작동합니다.
결과를 새 버퍼에 저장해야하지만 이전 현재 버퍼의 정보가 필요한 경우 다음을 사용할 수 있습니다 system()
.
:let res = system('echo '.expand('%'))
:tabnew
:put=res
또는 나중에 현재 버퍼 이름을 저장하십시오 .
:let bn = expand('%')
:tabnew | :r!echo <c-r>=bn<cr>