Мне нужно было отредактировать много файлов в последнее время для небольшого изменения в каждом файле. Чтобы добраться до каждого файла, я просматривал NERDtree и открывал один файл за другим. Открывая все больше и больше файлов, я заметила, что объем используемой памяти увеличился. Закрытие vim вернуло мне много памяти.
У меня установлено довольно много плагинов, но я думаю, что причина, по которой мое использование памяти так резко возросло, была связана с количеством буферов, которые я открыл после нескольких правок.
Есть ли способ ограничить количество буферов, которые vim позволяет открывать за один раз, автоматически закрывая старые буфера относительно времени редактирования?
b:variables
но в томs:plugin[bufid]
случае, если сопровождающий плагин предпочел не загрязнять общедоступноеb:
«пространство имен» . В этом случае удаление буфера не обязательно соберет все связанные переменные / память.Следующее должно ответить на ваш вопрос.
Это должно быть добавлено в плагин. Затем вам придется выбрать, как его использовать.
источник
Я не уверен, как получить самые старые буферы относительно времени редактирования, но вместо этого можно попытаться закрыть самые старые нередактированные буферы. Что-то вроде:
Ноты:
vim.buffers
список всех буферов, открытых в текущем сеансе, поэтому он также включает буферы, не включенные в список. Это не то же самое, что список, возвращаемый:ls
.options['buflisted']
.options['modified']
давайте проверим, изменен ли буфер.N
количество неизмененных перечисленных буферов, которые вы хотите открыть.Благодаря ответу Люка Эрмитта, из которого я узнал, как получить временные метки, вы могли бы вместо этого использовать следующее, чтобы сначала выкинуть самый старый неактивный:
источник
:let buffers = filter(range(0, bufnr('$')), 'buflisted(v:val) && ! getbufvar(v:val, "&modified")')
+:exe 'bw '.join(buffers, ' ')
bw
справке IIRC говорится, что вы не должны использовать ее «если вы не знаете, что делаете». Я не. :):bw
, и никогда:bd
. Я никогда не видел смысла удалять почти все из буфера, но не все.