파일 폴더에서 함수 또는 매크로를 어떻게 실행할 수 있습니까?


12

라는 함수가 있다고 가정 해 봅시다 StripWhitespace.

파일을 열고 실행하여 단일 파일에서 실행할 수 있습니다 :StripWhitespace.

파일 폴더에 대해 해당 기능을 자동으로 실행하고 결과를 저장하는 방법은 무엇입니까?


3
자세한 내용은 제발!
200_success

답변:


10

-c인수를 사용하여 시작할 때 다음에서 명령을 실행할 수 있습니다 vim(1).

   -c {command}
               {command} will be executed after the first  file  has  been
               read.   {command}  is interpreted as an Ex command.  If the
               {command} contains spaces it must  be  enclosed  in  double
               quotes  (this depends on the shell that is used).  Example:
               Vim "+set si" main.c
               Note: You can use up to 10 "+" or "-c" commands.

예:

vim -c ':call StripWhitespace()' file1 file2

나중에 종료하려면 다음을 추가하십시오 | :wqa.

vim -c ':call StripWhitespace() | :wqa' file1 file2

1
커맨드 라인에서 몇 개의 파일에
대해이

19

이미 Vim에있는 경우 :argdo또는 :bufdo명령을 사용 하여 인수 목록 또는 버퍼 목록의 모든 항목에 대해 각각 명령을 실행할 수 있습니다 .

예를 들어 :인수 목록의 모든 파일에서 명령 을 실행하려면

:argdo StripWhitespace

또는 버퍼 목록의 모든 파일에서 함수를 호출하려면 다음을 수행하십시오.

:bufdo call StripWhitespace()

또는 q인수 목록의 모든 파일에서 매크로를 실행하려면 다음을 수행 하십시오.

:argdo normal @q

그런 다음 모든 변경된 버퍼를로 :wall저장하거나 모두 저장하고로 Vim을 종료 할 수 있습니다 :wqall.

진행하면서 파일을 작성하려면 다음과 :update같이에 전화를 추가 할 수 있습니다 .

:argdo s/foo/bar/ge | update

우선 Vim으로 파일을 가져올 수있는 다양한 방법이 있습니다.

  • vim 명령 행에 매개 변수를 제공하십시오 vim *(이는 모든 파일을 인수 목록에 추가합니다).
  • :args와일드 카드 및 백틱 표현식을 지원 하는 명령을 사용하여 인수 목록을 채우거나 :argadd파일을 추가 하는 명령을 사용하십시오.
  • 그냥 모두 수동으로 그들을 열 :e, :Ex또는 파일 개방 플러그인.

1
Vim을 떠날 필요가 없기 때문에이 답변이 마음에 듭니다. 내 의견으로는 너무 비쌉니다 (내 소중한 버퍼 목록!). 나는 약간의 메모를 가지고있다 : (1) 쓰지 않고 버퍼를 떠나는 'hidden'것은 설정 될 필요 가있다; (2) : update명령을 통해 약간의 개선 :w하며,이 변경이되어있는 경우에만 기록하기 때문에 :bufdo update또는 :argdo update수정 된 모든 버퍼 또는 인수를 작성합니다.
tommcdo

에 좋은 지적 update. 나는 hidden대답을 쓸 때 언급하는 것을 고려 했지만 너무 복잡하게하고 싶지 않기 때문에 그것에 반대하기로 결정했습니다. 반성 할 때 거기에 있어야합니다. 현재 두 제안을 모두 포함하도록 답변을 업데이트하겠습니다.
Rich

@tommcdo 방금 설명서에서 : wall을 확인했으며 변경된 버퍼 만 기록하므로 : bufdo 업데이트가 필요하지 않습니다.
Rich

에 관한 좋은 캐치 :wall또한 버퍼를 순환하고 시작한 곳에서 멀리 이동하지 않는 장점이있다. 나는 :argdo update여전히 다른 이야기 라고 생각합니다. 아마도 인수 목록에없는 버퍼에 쓰고 싶지 않습니다.
tommcdo

@tommcdo 좋은 지적입니다.
Rich
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.