Vim'de autocmd veya augroup nasıl devre dışı bırakılır?


25

Verilen bir komut gibi bir grup var:

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

MyGroup'taki tüm otomatik komutları bir süreliğine devre dışı bırakmak ve daha sonra yeniden etkinleştirmek istiyorum.

Grupla yapabileceğim bir şey var mı? Özellikle, tüm grubu bir kerede devre dışı bırakmanın bir yolu var mı? Değilse, ayrı komutları devre dışı bırakmak için ne yapabilirim?

Yardıma baktığımda sadece birkaç seçenek görüyorum:

  • augroup!tüm grubu silecek: Tekrar doğrulamak isteyeceğimden bunun doğru olduğunu düşünmüyorum. (Ama belki de grubu kolayca yeniden tanımlamanın bir yolu var mı?)
  • :noautocmdyalnızca bir kerelik bir komut çağrısı için geri çağrıları devre dışı bırakır. (Ve tüm oto cmd'leri devre dışı bırakır , belirtilemez)
  • eventignore Komutu değil olay bağlamasını ele alır: yalnızca bir komut veya belirleyebileceğim bir grup için değil, belirli bir olay için tüm ilişkili komutları devre dışı bırakmış gibi görünür.

Bu nasıl yapılır?

Yanıtlar:


20

Gönderen :help autocmd:

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

Gönderen :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.

Yani :noautocmdaradığınız şey bu.

Hangi bağlamda bir özelliğini devre dışı bırakmak istiyorsunuz augroup?


Cevabınız için teşekkürler, ancak bunu dokümanlarda zaten okudum. Ne aradığımı göstermek için (umarım) sorumu netleştirdim.
Andrew Vit

8

Gönderen burada , onu elde eder görünüyor:

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

...

:autocmd! Foo BufEnter *

1

Geri edememek orijinal afişleri gereksinimi yoktur herkes için augroup, :autocmd! <augroup name>sadece tümünü silmek için komut autocmdbir in augroup, örneğin:

:autocmd! MyGroup
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.