I stworzył augroup
w moim .vimrc
zawierający kilka autocmd
i muszę włączyć / wyłączyć je autocommand
w locie.
Chodzi o to, aby utworzyć mapowanie (powiedzmy F4na przykład), które włączałoby te automatyczne polecenia po jednokrotnym naciśnięciu i wyłączało je po ponownym naciśnięciu bez konieczności pobierania pliku lub przeładowywania .vimrc
.
Jak mogę to zrobić?
key-bindings
autocmd
statox
źródło
źródło
else
gałąź, uruchamiającautocmd!
bezwarunkowo na początku.exists('#TestAutoGroup#BufEnter')
wróci poautocmd!
?(Właściwie to sam to wymyśliłem, ale ponieważ nie znalazłem odpowiedzi na tej stronie, pomyślałem, że może to być przydatne do stworzenia pytania z odpowiedzią )
W tym celu można utworzyć następującą funkcję i umieścić ją w
.vimrc
:Funkcja tworzy zmienną używaną do ustalenia, czy grupa była wcześniej włączona, czy nie.
Gdy nie jest włączona, grupa jest zapełniana poszukiwanymi poleceniami automatycznymi. Jeśli grupa była wcześniej włączona, używamy jej
autocmd!
do „resetowania”, tj. Usuwania wcześniej wprowadzonego polecenia.Odpowiednia dokumentacja jest tutaj
Wreszcie można utworzyć następujące mapowanie:
do F4wywołania funkcji.
EDYCJA : Karl Yngve Lervåg zasugerował ulepszoną wersję tej funkcji, która zmniejszyła liczbę wierszy kodu, uważam, że dobrze byłoby zachować obie wersje, ponieważ pierwsza nadal działa, być może łatwiejsza do zrozumienia dla takiego debiutanta vimscript jak ja.
Oto ulepszona funkcja Karla, wiele dzięki niemu:
W tej wersji grupa jest zawsze resetowana, a jeśli nie została włączona, jest zapełniana poszukiwanymi poleceniami automatycznymi
źródło
Uważam, że najłatwiejszym sposobem jest użycie zmiennej globalnej. Przykład:
Aby uzyskać więcej pomocy, zobacz:
źródło