(मुझे वास्तव में यह अपने आप पता चल गया लेकिन जैसा कि मुझे इस साइट पर एक उत्तर नहीं मिला, मुझे लगा कि यह स्व-उत्तर वाला प्रश्न बनाने के लिए उपयोगी हो सकता है )
ऐसा करने के लिए निम्नलिखित फ़ंक्शन बनाना और इसे इसमें डालना संभव है .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
फ़ंक्शन यह निर्धारित करने के लिए उपयोग किया जाने वाला चर बनाता है कि क्या समूह पहले सक्षम था या नहीं।
जब यह सक्षम नहीं था, तो समूह वांछित ऑटोकॉमैंड्स के साथ आबाद है। यदि समूह पहले सक्षम था, तो हम autocmd!
इसे "रीसेट" करने के लिए उपयोग करते हैं अर्थात पहले दर्ज की गई कमांड को हटाते हुए।
एक प्रासंगिक प्रलेखन यहाँ है
अंत में फॉलिंग मैपिंग बनाना संभव है:
nnoremap <F4> :call ToggleTestAutoGroup()<CR>
F4फ़ंक्शन को कॉल करने के लिए उपयोग करने के लिए।
EDIT : कार्ल यंगेव लार्वाग ने इस फ़ंक्शन के एक बेहतर संस्करण का सुझाव दिया, जिसने कोड की लाइनों की संख्या को कम कर दिया, मुझे लगा कि दोनों संस्करणों को पहले रखना अच्छा होगा क्योंकि अभी भी मेरे जैसे एक vimscript पदार्पण से समझना आसान है।
यहाँ कार्ल का बेहतर कार्य है, उसके लिए बहुत धन्यवाद:
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
इस संस्करण में समूह हमेशा रीसेट होता है, और अगर यह सक्षम नहीं था, तो यह वांछित ऑटोकॉमैंड्स के साथ आबाद है