Bagaimana cara menonaktifkan autocmd atau augroup di vim?


25

Mengingat saya memiliki sekelompok perintah seperti:

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

Saya ingin menonaktifkan semua perintah otomatis di MyGroup untuk sementara waktu dan kemudian mengaktifkannya kembali.

Apakah ada yang bisa saya lakukan dengan grup? Secara khusus, apakah ada cara untuk menonaktifkan seluruh grup sekaligus? Jika tidak, apa yang dapat saya lakukan untuk menonaktifkan perintah individual?

Melihat bantuan, saya hanya melihat beberapa opsi:

  • augroup!akan menghapus seluruh grup: Saya rasa ini tidak benar karena saya ingin mengaktifkannya kembali. (Tapi mungkin ada cara untuk mendefinisikan kembali grup dengan mudah?)
  • :noautocmdhanya akan menonaktifkan callback untuk doa satu kali perintah. (Dan itu menonaktifkan semua autocmds, bukan yang ditentukan)
  • eventignore membahas peristiwa yang mengikat, bukan perintah: itu terdengar seperti menonaktifkan semua perintah terikat untuk peristiwa tertentu, bukan hanya satu perintah atau grup yang dapat saya tentukan.

Bagaimana ini dilakukan?

Jawaban:


20

Dari :help autocmd:

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

Dari :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.

Jadi yang muncul :noautocmdadalah yang Anda cari.

Dalam konteks apa Anda ingin menonaktifkan augroup?


Terima kasih atas jawaban Anda, tetapi saya sudah membaca ini di dokumen. Saya mengklarifikasi pertanyaan saya untuk (semoga) menunjukkan apa yang saya cari.
Andrew Vit

8

Dari sini , tampaknya ini mencapainya:

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

...

:autocmd! Foo BufEnter *

1

Bagi siapa pun yang tidak memiliki persyaratan poster asli untuk dapat mengembalikannya augroup, :autocmd! <augroup name>adalah perintah untuk menghapus semuanya autocmddalam augroup, misalnya:

:autocmd! MyGroup
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.