vim에서 bash 스크립트 실행


21

bash 스크립팅에 vim을 사용합니다. 때로는 새 파일을 만들고 실행 가능하게 만들고 실행 한 다음 제거하고 싶지 않습니다. 한 번만 사용되는 스크립트를 의미합니다.

예를 들어 vim을 열고 다음을 입력하십시오.

#!/bin/bash

ll | while read line
do
    echo $line
done

이 파일을 저장하지 않았습니다. vim을 사용하여 bash 스크립팅을 단순화합니다. !vim에서 bash 명령을 실행할 수 있다는 것을 알고 있습니다 . 그러나 버퍼에있는 모든 것을 실행하는 것은 어떻습니까?


4
Vim에서 현재 명령 행을 편집하고 <C-x><C-e>쓰기 작업으로 실행할 수 있다는 것을 알고 있습니까?
romainl

이 옵션으로 bash를 실행 set -o vi하면 Esc-vvi에서 명령 행을 편집 할 수 있습니다 . 그런 다음 Esc-:wq실행하십시오.
roblogic

답변:


35

나는 stack-overflow에서 이것 대해 꽤 광범위한 답변을 썼습니다 . 기본 아이디어는 write 명령이 저장 하지 않고 쓰는 것이므로 버퍼의 텍스트를 파이썬이나 bash와 같은 외부 프로그램에 쓸 수 있다는 것입니다. 귀하의 경우 다음과 같은 일을 원할 것입니다.

:w !bash

또는

:w !sh

이 명령은 문자 그대로 버퍼의 텍스트를로 지정한 프로그램에 직접 !쓰므로 파일을 저장할 필요가 없기 때문에 편리합니다. 물론 다음과 같은 작업을 수행 할 수도 있습니다.

:w | !bash %

파일을 저장 한 다음 bash 스크립트로 실행합니다. 어느 것이 더 적합한 지 선택할 수 있습니다.


이런 식으로 옵션에 인수를 제공하는 방법이 있습니까? 시도 :w !bash -a test했지만 "이진 파일을 실행할 수 없습니다"
St.Antario

@ St.Antario 흠. 나는 어떤 방법이 있어야한다고 확신하지만 내 배쉬는 꽤 녹슨 것입니다 (주로 창을 사용합니다). 빈 test파일 로 cygwin에서 시도하면 제대로 작동합니다. 명령은 무엇을하고 무엇을 test포함 해야 합니까?
DJMcMayhem

내 실제 사례는 매우 복잡하므로 전달 된 인수를 인쇄하도록하겠습니다. BTW, 무엇을 test 포함 해야 합니까? test에 대한 논쟁 일뿐 -a입니다.
St.Antario

1
@ St.Antario 아, 알겠습니다. 나는 test파일 이라고 생각했다 . 어떻게해야할지 모르겠습니다. 복잡한 것을 시도하고 있다면 파일로 저장하는 것이 좋습니다. 더 자세한 정보를 제공 할 수 있도록 별도의 질문을하는 것이 좋습니다. 아마 아마 유닉스와 리눅스에
DJMcMayhem

4

시나리오 : bash 쉘에서 작업 중입니다. 먼저 로컬 편집 모드가 vi인지 확인하십시오.

$ set -o vi

이제 다음과 같은 긴 명령을 수행하고 있으면 Esc+를 누르십시오 v.

$ fjhwfq this is my long command

그러면 명령이 임시 vi세션 으로로드됩니다 . 이제 원하는대로 편집하고 다른 명령을 추가 할 수도 있습니다.

fjhwfq some long command
ls -l

편집을 마치면 다음 Esc :wq과 같이 입력 하면 명령이 실행됩니다.

$ fjhwfq some long command
fjhwfq some long command
bash: fjhwfq: command not found
ls -l
total 44
-rw-r--r-- 1 ropata Domain Users 24073 Nov 10 14:17 _viminfo
drwxr-xr-x 1 ropata Domain Users     0 Jul 15 13:57 bin/
-rw-r--r-- 1 ropata Domain Users   956 Nov  7 10:43 custom_env

3
키가없는 새로운 맥북을 가지고 있다면 작동하지 않을 수 있습니다 Esc;)
roblogic

1
새로운 MacBook에는 Esc열쇠 가 없습니다 !? 그러면 어떻게 Vim을 사용할 수 있습니까?
Hubro

1
지금은 그것을 시도했습니다, 꼬추 touchbar 새로운 맥북은 하지 보여 Esc터미널에서 빔을 실행할 때 키를 누릅니다.
roblogic
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.