Düzenleme süresi bakımından en eski arabellekleri nasıl alacağımdan emin değilim, ancak bunun yerine, en eski düzenlenmemiş arabellekleri kapatmayı deneyebilir. Gibi bir şey:
function CloseLast ()
python <<EOF
import vim
N = 10
listed_buffers = [b for b in vim.buffers if b.options['buflisted'] and not b.options['modified']]
for i in range (0, len (listed_buffers) - N):
vim.command (':bd' + str (listed_buffers[i].number))
EOF
endfunction
autocmd BufNew * call CloseLast()
Notlar:
vim.buffers
geçerli oturumda açılan her arabellek listesidir, dolayısıyla liste dışı arabellekleri de içerir. Döndürülen listeyle aynı değil :ls
.
- Bu nedenle, gizli veya silinmiş arabellekleri filtrelemeliyiz. Bu kullanılarak kontrol edilebilir
options['buflisted']
.
- Benzer şekilde,
options['modified']
tamponun değiştirilip değiştirilmediğini kontrol edelim.
N
açık olmasını istediğiniz değiştirilmemiş, listelenen arabelleklerin sayısıdır.
Sayesinde Luc Hermitte cevabı hangi ı damgalarını nasıl, önce çıkartılmamış en eski inaktif olsun, yerine aşağıdaki kullanabilirsiniz öğrendim:
listed_buffers = (b for b in vim.buffers if b.options['buflisted'] and not b.options['modified'])
oldest_buffers = sorted (listed_buffers, key = lambda b: eval('getftime("' + b.name + '")'))
for i in range (0, len (oldest_buffers) - N):
vim.command (':bd' + str (oldest_buffers[i].number))