예상대로 작동하지 않는 모든 파일을 열기 위해 vim을 사용하는 쉘 글로빙

예상대로 작동하지 않는 모든 파일을 열기 위해 vim을 사용하는 쉘 글로빙

저는 vim을 사용하여 일련의 파일을 열고 편집하려고 합니다. 내가 예상하는 동작은 vim이 파일을 열고 편집하고 를 입력하면 :wqvim이 파일을 닫고 저장한 다음 편집을 시작할 수 있도록 즉시 다음 파일을 여는 것입니다.

구글링을 좀 하다가일부 결과vim *vim pattern*또는 표준 유닉스 쉘 파일 글로빙 구문을 변형한 솔루션이 제공됩니다 .

그러나 내 시스템에서 이 작업을 시도하면 예기치 않은 동작이 발생합니다. 편집한 후 :wqvim이 동일한 첫 번째 파일을 (변경 사항이 저장된 상태로) 다시 여는 것처럼 보이더니, 또 다른 파일이 :wq나를 명령줄로 되돌려 보냅니다. 편집을 위해 열려 있는 다른 파일이 없습니다.

편집하다전역을 올바르게 읽지 못하는 경우를 대비하여 별표를 피하는 두 가지 방법을 시도했습니다.

$ vim webform.webform.\*

$ vim "webform.webform.*"

그러나 두 구문 모두 리터럴 이름으로 새 파일을 편집하는 vim 화면을 제공합니다.webform.webform.*

이것은 처음에 시도한 것이지만 예상치 못한 동작이 발생했습니다.

$ vim webform.webform.*

Vim은 첫 번째 파일을 엽니다:

...   ...
100   draft_pending_multiple_message: ''
101   confirmation_type: page
102   confirmation_title: ''
103   confirmation_message: ''
"webform.webform.my_webform.yml" 184L, 8621C

파일을 편집하고 저장한 후 닫습니다.

:wq

Vim은 변경 사항이 기록되었음을 확인하고 편집할 파일이 몇 개 남았는지 표시하며 어떤 이유로 Enter 키를 누르라고 합니다.

"webform.webform.my_webform.yml" 184L, 8621C written
E173: 130 more files to edit
Press ENTER or type command to continue 

그런 다음 방금 열었던 첫 번째 파일을 다시 엽니다.

100   draft_pending_multiple_message: ''
101   confirmation_type: page
102   confirmation_title: ''
103   confirmation_message: ''
                            1,1           Top

저장하고 닫습니다.

:wq

이제 vim에 다른 파일이 열려 있지 않은 상태에서 bash 프롬프트로 돌아왔습니다.

$

파일을 열고 편집하고 저장하고 닫은 후 다음 파일을 편집하고 싶습니다. 내가 뭘 잘못했나요?

$ bash --version
GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)

$ vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jun 21 2019 04:10:35)
...

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
...

답변1

문제는 와일드카드가 아닙니다. 각 파일은 버퍼에서 열리며, :wq버퍼 종료는 사용할 수 없습니다. 이를 사용하여 :w|bd현재 버퍼를 저장하고 언로드할 수 있습니다. 그러나 나는 그것이 투박하다고 생각합니다. 더 나은 접근 방식은 -pVim을 호출할 때 이 플래그를 추가하는 것입니다:

vim -p webform.webform.*

이렇게 하면 각 파일이 새 탭에서 열리며, 그런 다음 :wq(또는 )을 사용하여 :x파일을 저장하고 탭을 닫을 수 있습니다.

답변2

icarus의 의견에 따르면 :wnthen 을 write대신 사용 next하면 :wq원하는 동작을 얻을 수 있으며 vim에 두 개의 별도 명령을 입력할 필요가 없습니다.

관련 정보