bash에서 명령 출력을 vim으로 리디렉션하는 방법은 무엇입니까?


87

bash 명령의 출력을 새 파일로 리디렉션하려고합니다.

아래처럼 파이프를 사용하면 :

ls -la | vim

Bash는 나에게 오류를 보여줍니다.

Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.

Vim을 열고 다음을 사용할 수 있음을 알고 있습니다.

:r !ls -la

그러나 bash 자체 에서이 작업을 수행하여 Vim을 열고 출력을 자동으로 붙여 넣을 수있는 방법이 있습니까?

답변:


140

프로세스 대체 를 사용할 수 있습니다 (이는 읽을 수없는 애플리케이션에서도 작동 함 STDIN).

vim <(ls -la)

또는 vim의 함수를 사용 하여 STDIN다음 을 읽으십시오 .

ls -la | vim -

2
<(ls -la)실제로 는 명령 대체가 아닌 프로세스 대체 입니다.
Eliah Kagan

1
vim의 옵션이 정말 마음에 듭니다. 데이터 덤프에서 쉽게 출력을 검색하고 찾고 저장할 수 있습니다.
Josue Alexander Ibarra

38

당신은 정말 자신에 가깝습니다. 당신은 하나의 문자가 누락되었습니다.

ls -la | vim -

10
기술적으로 두 문자입니다. ;)
Cory Klein

19

누군가에게 새로운 것을 가르쳐주기위한 또 다른 접근법이 있습니다.

명령 :r !ls -la이 vim 내에서 작동 한다는 것을 알고 있다면 다음을 수행하여 vim을 열고 bash에서 바로 명령을 열 자마자 명령을 실행할 수 있습니다.

vim -c ':r! ls -la'

이것은 vim명령 을 열고 실행 하는 것과 같습니다 :r! ls -la. 이것은 옵션 vim뒤에 오는 명령에서 작동 합니다 -c.


12

vim에게 stdin을 열라고 말할 수 있습니다 :

ls -la | vim -

1

목표가 단순히 출력을 텍스트 파일로 얻는 것이라면 vim을 호출 할 필요가 없습니다. 배쉬와 함께 혼자 할 수 있습니다

ls -la > outputfile.txt

1

setlocal buftype=nofile

대체 할 별명을 작성하려는 경우 좋은 옵션입니다 less.

seq 100 | vim +':setlocal buftype=nofile' -

이제!를 입력 할 필요가 없습니다. 종료합니다.

다른 옵션은 다음과 같습니다.

seq 100 | vim +'nnoremap q :quit!' -

으로 종료 할 수 있습니다 q<enter>.


좋은 생각. 이 길이를 입력하는 것보다 확실히 짧습니다! :)
kode 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.