Tôi hiện đang cắt bớt bộ đệm ở 20.000 dòng bằng cách thêm vào phần sau vào cấu hình của mình:
(setq eshell-buffer-maximum-lines 20000)
;; automatically truncate buffer after output
(add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer)
Điều này hoạt động tuyệt vời cho <20.000 dòng và khi bộ đệm đạt 20.000 dòng, nó sẽ bị cắt ngắn trên mỗi dòng (vì vậy nó nằm ở 20.001 dòng mãi mãi). Tuy nhiên, khi bộ đệm đạt 20.000 dòng, mỗi dòng tiếp theo sẽ mất nhiều thời gian hơn để in và khiến CPU của emacs ngồi ở mức 100% trong một thời gian khá lâu.
Có cách nào để cải thiện hiệu suất của việc cắt bớt bộ đệm không? Có lẽ chỉ cắt ngắn mỗi 100 dòng được thêm vào? Nó không giống như tôi thực sự cần nó chính xác là 20.000 dòng, tôi chỉ không muốn bộ đệm phát triển vô hạn.
eshell-truncate-buffer
mỗi lần đầu ra được tạo ra. Nó có thể có ý nghĩa hơn để làm cho việc cắt ngắn độc lập với sản xuất đầu ra. Như @PythonNut đề xuất cắt ngắn sau khi hết thời gian có vẻ hợp lý hơn.