vim에서 autocmd 또는 augroup을 비활성화하는 방법은 무엇입니까?


25

다음과 같은 명령 그룹이 있다고 가정합니다.

augroup MyGroup
  autocmd CursorMoved * silent call MyCommandOne()
augroup END

MyGroup의 모든 자동 명령을 잠시 비활성화 한 다음 나중에 다시 활성화하고 싶습니다.

그룹과 함께 할 수있는 일이 있습니까? 특히, 전체 그룹을 한 번에 비활성화 할 수있는 방법이 있습니까? 그렇지 않은 경우 개별 명령을 비활성화하려면 어떻게해야합니까?

도움말을 보면 몇 가지 옵션 만 볼 수 있습니다.

  • augroup!전체 그룹을 삭제합니다. 다시 사용하도록 설정하기 때문에 이것이 옳지 않다고 생각합니다. (하지만 그룹을 쉽게 다시 정의 할 수있는 방법이 있습니까?)
  • :noautocmd명령의 일회성 호출에 대한 콜백 만 비활성화합니다. (그리고 그것은 지정되지 않은 모든 autocmds를 비활성화 합니다)
  • eventignore 명령이 아닌 이벤트 바인딩을 처리합니다. 하나의 명령이나 그룹을 지정할 수있는 것이 아니라 지정된 이벤트에 대해 모든 바운드 명령을 비활성화하는 것처럼 들립니다.

이것은 어떻게 이루어 집니까?

답변:


20

보낸 사람 :help autocmd:

If you want to skip autocommands for one command, use the :noautocmd command
modifier or the 'eventignore' option.

보낸 사람 :help :noautocmd:

To disable autocommands for just one command use the ":noautocmd" command
modifier.  This will set 'eventignore' to "all" for the duration of the
following command.  Example:

    :noautocmd w fname.gz

This will write the file without triggering the autocommands defined by the
gzip plugin.

그래서 그것은 :noautocmd당신이 찾고있는 것입니다.

어떤 컨텍스트에서 augroup? 를 비활성화 하시겠습니까?


귀하의 답변에 감사드립니다. 그러나 나는 이미 문서에서 이것을 읽었습니다. 나는 내가 찾고있는 것을 (희망스럽게) 보여주기 위해 내 질문을 분명히했다.
Andrew Vit

8

에서 여기 ,이 그것을 달성 할 것 같다 :

:augroup Foo
:autocmd BufEnter * :echo "hello"
:augroup END

...

:autocmd! Foo BufEnter *

1

을 복원 할 수있는 원래 포스터의 요구 사항이없는 누군가를 위해 augroup, :autocmd! <augroup name>단순히 모두 삭제하는 명령입니다 autocmd의를 augroup, 예를 들면 :

:autocmd! MyGroup
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.