Musiałem ostatnio edytować wiele plików, aby wprowadzić niewielką zmianę w każdym z nich. Aby dostać się do każdego pliku, przejrzałem NERDtree i otworzyłem jeden plik po drugim. Gdy otwierałem coraz więcej plików, zauważyłem, że moje użycie pamięci znacznie wzrosło. Zamknięcie vima przywróciło mi wiele pamięci.
Mam zainstalowanych sporo wtyczek, ale myślę, że przyczyną tak drastycznego zużycia pamięci była liczba buforów, które otworzyłem po kilku edycjach.
Czy istnieje sposób na ograniczenie liczby buforów, które vim pozwala otworzyć jednocześnie, automatycznie zamykając stare bufory w odniesieniu do czasu edycji?
b:variables
ales:plugin[bufid]
jeśli opiekun wtyczki wolał nie zanieczyszczać publicznejb:
„przestrzeni nazw” . W takim przypadku usunięcie bufora niekoniecznie zbierze wszystkie powiązane zmienne / pamięć.Następujące powinny odpowiedzieć na twoje pytanie.
To należy upuścić do wtyczki. Następnie musisz wybrać sposób jego użycia.
źródło
Nie jestem pewien, jak uzyskać najstarsze bufory w odniesieniu do czasu edycji, ale zamiast tego można spróbować zamknąć najstarsze niezbadane bufory. Coś jak:
Uwagi:
vim.buffers
jest listą każdego bufora otwartego w bieżącej sesji, więc zawiera także bufory niepubliczne. To nie to samo, co lista zwrócona przez:ls
.options['buflisted']
.options['modified']
sprawdźmy, czy bufor jest zmodyfikowany.N
to liczba niezmodyfikowanych, wymienionych buforów, które chcesz otworzyć.Dzięki odpowiedzi Luca Hermitte'a, z której dowiedziałem się, jak uzyskać znaczniki czasu, możesz zamiast tego skorzystać z następujących opcji, aby najpierw wyrzucić najstarszego nieaktywnego:
źródło
:let buffers = filter(range(0, bufnr('$')), 'buflisted(v:val) && ! getbufvar(v:val, "&modified")')
+:exe 'bw '.join(buffers, ' ')
bw
Pomoc IIRC mówi, że nie powinieneś go używać „, chyba że wiesz, co robisz”. Ja nie. :):bw
i nigdy:bd
. Nigdy nie widziałem sensu usuwania prawie wszystkiego z bufora, ale nie wszystkiego.