(Saya benar-benar menemukan jawabannya sendiri tetapi karena saya tidak menemukan jawaban di situs ini, saya pikir itu bisa berguna untuk membuat pertanyaan yang dijawab sendiri )
Untuk melakukannya dimungkinkan untuk membuat fungsi berikut dan meletakkannya di .vimrc
:
function! ToggleTestAutoGroup()
if !exists('g:TestAutoGroupMarker')
let g:TestAutoGroupMarker = 1
endif
" Enable if the group was previously disabled
if (g:TestAutoGroupMarker == 1)
let g:TestAutoGroupMarker = 0
" actual augroup
augroup TestAutoGroup
autocmd! BufEnter * echom "BufEnter " . bufnr("%")
autocmd! BufLeave * echom "BufLeave " . bufnr("%")
autocmd! TabEnter * echom "TabEnter " . tabpagenr()
autocmd! TabLeave * echom "TabLeave " . tabpagenr()
augroup END
else " Clear the group if it was previously enabled
let g:TestAutoGroupMarker = 1
" resetting the augroup
augroup TestAutoGroup
autocmd!
augroup END
endif
endfunction
Fungsi membuat variabel yang digunakan untuk menentukan apakah grup itu sebelumnya diaktifkan atau tidak.
Ketika tidak diaktifkan, grup tersebut diisi dengan perintah otomatis yang diinginkan. Jika grup sebelumnya diaktifkan, kami menggunakan autocmd!
"reset" yaitu menghapus perintah yang sebelumnya dimasukkan di dalamnya.
Dokumentasi yang relevan ada di sini
Akhirnya dimungkinkan untuk membuat pemetaan berikut:
nnoremap <F4> :call ToggleTestAutoGroup()<CR>
digunakan F4untuk memanggil fungsi.
EDIT : Karl Yngve Lervåg menyarankan versi yang ditingkatkan dari fungsi ini yang mengurangi jumlah baris kode, saya merasa akan lebih baik untuk menjaga kedua versi yang pertama tetap berfungsi mungkin lebih mudah dimengerti oleh debutan vimcript seperti saya.
Inilah fungsi Karl yang ditingkatkan, terima kasih banyak padanya:
function! ToggleTestAutoGroup()
" Switch the toggle variable
let g:TestAutoGroupToggle = !get(g:, 'TestAutoGroupToggle', 1)
" Reset group
augroup TestAutoGroup
autocmd!
augroup END
" Enable if toggled on
if g:TestAutoGroupToggle
augroup TestAutoGroup
autocmd! BufEnter * echom "BufEnter " . bufnr("%")
autocmd! BufLeave * echom "BufLeave " . bufnr("%")
autocmd! TabEnter * echom "TabEnter " . tabpagenr()
autocmd! TabLeave * echom "TabLeave " . tabpagenr()
augroup END
endif
endfunction
Dalam versi ini grup ini selalu diatur ulang, dan jika tidak diaktifkan, ia diisi dengan perintah otomatis yang diinginkan