답변:
-
명령 행에서 파일 이름 대신 사용해야 합니다.
echo This is example. | vim -
위의 명령은 표준 입력에서 읽은 텍스트로 채워진 명명되지 않은 버퍼를 엽니 다.
-
for stdin을 사용하는 것은 명령 행 도구에 거의 표준입니다.
이것은 단지 대부분에 대한 재미 노트입니다 bash
및 readline
하지만 당신이 설정 한 경우 EDITOR
에 환경 변수를 vim
타격, Ctrl+ x+는 e에서 현재 행을 열 것이다 vim
. 또한 Meta(Alt/Opt/Esc)+ Ctrl+ 를 입력하면 ebash는 현재 명령 줄에서 인플레 이스 확장을 수행합니다.
$ echo $EDITOR # Assuming EDITOR was set
와 Meta(Alt/Opt/Esc)+ Ctrl+ e될 것
$ echo vim # Assuming EDITOR was set
와 Ctrl+ x+ e될 것
1 echo vim # Assuming EDITOR was set
~
~
/tmp/sometmpbufferfile
vim을 종료하면 vim 버퍼의 내용이 명령 줄에서 실행됩니다.
이 기능은 루프 또는 here 문을 필요로하는 프로그램과 같이 bash에서 여러 줄 명령을 원할 때 매우 유용하며 나중에 사용할 수 있도록 약간의 명령 줄 기록을 파일에 저장하는 흥미로운 방법을 제공합니다.
원래 질문에 답하기 위해 다음과 같이 쓸 수도 있습니다.
$ This is an example
다음 히트 Ctrl+ x+ e에서 그것을로드 vim
. 또한 당신은 할 수 있습니다
$ $(cat /etc/hosts)
그리고 어떻게 Meta(Alt/Opt/Esc)+ Ctrl+ e후 Ctrl+ x+ e, 한 줄에 호스트 파일을 모두 넣고 그것을로드 것이다 vim
이러한 기능 중 아마 최고의 사용 (- 그러나, 이러한 방법의 유용성은 논의 된 몇 가지 예에서 추정 할 수있다 여기).
귀하의 모드 readline
가 설정된 것으로 가정 emacs
합니다. 모드 readline
로 설정되어 있으면 다음 vim
명령을 사용하여 관련 바인딩을 쉽게 찾을 수 있습니다.
bind -p
및를 검색 edit-and-execute-command
하거나 shell-expand-line
각각 바인딩과 관련이있는 Ctrl+ x+ e와 Meta(Alt/Opt/Esc)+ Ctrl+ e.
set -o vi
켜려면 사용하십시오 . 그런 다음 v
일반 모드 에서 매핑을 사용 하여 편집기에서 현재 명령을 편집 할 수 있습니다 .
shell-expand-line
확장 된 텍스트에서 개행을 제거하고 2. edit-and-execute-command
버퍼에 작성된 명령을 실행하십시오. vi를 종료하면 저장 여부에 관계없이 vi.
bash에서 <(command)
구문 을 사용하여 프로세스 대체를 사용하는 것이 유용하다는 것을 알았습니다 .
vim <(echo This is example.)
vim <(cat /etc/hosts)
또한보십시오:
bash
하고 zsh
(그리고 sh
, ksh
, dash
, fish
, csh
, tcsh
, 등)
/proc/PID/fd/FD
. 버퍼를 작성하고 종료하면 Vim은 불평하지 않지만 작성한 파일은 OS에 의해 제거됩니다. -
열린 버퍼에 파일 이름으로 사용 하는 파일과 관련된 파일이 없으므로 Bang 명령을 사용하지 않는 한 종료하려고 시도하면 Vim을 저장하면 경고합니다.
vimdiff <(echo foo) <(echo bar)
.
:next
하고 :prev
다시 읽은 것으로 보이지만 아무것도 얻지 못합니다. 또한 프로세스가 서로 병렬 적이 지 않다 (예 : cat <(sleep 3; echo a) <(echo b)
순서대로 인쇄)하고 cat
인터리브가 쓰기 및 읽기를 하는 동안 vim
외부 프레임을 제외한 모든 것을 표시하기 전에 파일에서 "읽기 완료"를 기다립니다.
새로운 Vim에 파이프 라인을 사용하는 것이 요구 사항이 아닌 경우 Vim의 명령 출력을 현재 버퍼로 가져 오는 기능을 사용하여 파일이없는 백업 버퍼 ( :new
존재하지 않는 파일의 편집 또는 편집)와 결합 할 수 있습니다
:read!cat /etc/hosts
명령 모드에서 출력은 현재 커서 위치 아래의 현재 버퍼에 출력됩니다.
비어있는 버퍼에서 수행 될 때 남아있는 비어있는 첫 번째 행을 삭제해야하는 것과는 별도로 Vim이 이미 실행중인 경우에는 매우 편리합니다.
:help stdin
... 내장 된 문서에 대한 질문을함으로써 답변을 얼마나 빨리 찾을 수 있는지 놀랍습니다.