Vim에서 명령 줄의 출력을 얻는 우아한 방법은 무엇입니까?


14

Vim에 있고 명령 줄에서 출력을 가져 와서 현재 파일에 고정하려면 다음을 실행할 수 있습니다.

:! echo "foo" >> %

그러면 현재 파일에 "foo"가 추가되고 다시로드해야합니다.

더 우아한 방법이 있습니까? 예를 들어 출력을 붙여 넣을 수있는 버퍼로 보내야합니까?

답변:


24

예:

:r !echo "foo"

보다

:help :r!

현재 줄 다음에 명령의 출력이 삽입됩니다. 붙여 넣을 수있는 레지스터에 명령 출력을 캡처하려면 다음을 수행하십시오.

:let @a = system('echo "foo"')

이제 명령의 출력 (후행 줄 바꾸기 포함)이 register에 a있습니다. 보다

:help let-@
:help system()

도움말과 실험을 살펴본 후 1) :r"읽기"가 짧습니다 (따라서 '읽기'또는 'r'을 입력하고 동일한 명령입니다) .2) 수행 :r path/to/foo.txt하면 해당 내용이 삽입됩니다. 커서 뒤에 파일.
Nathan Long

또한-나는 system전화 에 대해 몰랐다 . 대단해!
Nathan Long

1
또한와 같은 레지스터를 수동으로 설정할 수 있다는 것을 몰랐습니다 let @a = 'foo'. 한 가지 멋진 아이디어는 검색 및 바꾸기를 수행 한 후 다른 위치에 붙여 넣기 위해 검색 용어를 레지스터에 저장할 수 있다는 let @a = @/것입니다.
Nathan Long

1
@Nathan Long : 천만에요. / 레지스터에서 붙여 넣는 다른 방법은 1) :put /레지스터 내용을 다음 줄에 배치 하기 위해 실행 하고 2) 삽입 모드에서 Ctrl-R을 입력 한 다음 /커서 위치에 레지스터 내용을 삽입하는 것입니다. 이에 대한 자세한 내용은 :help :put및을 참조하십시오 :help i_CTRL-R.
garyjohn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.