Fixing a missing Python REPL history
Posted 22 June 2022 in dotfiles, python, and windowsI've used advanced console managers for Windows for a long time, including ConsoleZ and ConEmu. I eventually tried -- and am currently using -- Windows Terminal with Powershell as the actual shell program. It's been great to get off of cmd.exe, but I noticed a problem: Python's REPL was no longer tracking my command history. The history of everything I typed was lost as soon as I exited the REPL!
I finally researched the problem and found that a Windows registry key needed to be updated. There's two ways to do that:
Open cmd.exe, right-click on the title bar, select "Defaults", and in the "Options" tab, change the "Number of Buffers" to a bigger number, like 10.
Edit the registry and change the HKCU/Console/NumberOfHistoryBuffers value to 10.
Making this change fixed the problem, but I permanently captured this fix by adding a registry file to my dotfiles repository and updated my Windows-specific dotbot configuration to always import that registry file.
My dotfiles directory
dotfiles/
│ dotbot-windows.yaml
│
└── windows/
increase-number-of-history-buffers.reg
dotbot-windows.yaml
- shell:
- description: "Increase the number of history buffers"
command: "reg import windows/increase-number-of-history-buffers.reg"
increase-number-of-history-buffers.reg
Windows Registry Editor Version 5.00
; Increase the number of history buffers to 10.
;
; On Windows 10, using Powershell in Windows Terminal,
; the default number of history buffers (4) is insufficient,
; and Python's REPL cannot track its command history.
;
; Increasing the number of history buffers fixes this problem.
;
[HKEY_CURRENT_USER\Console]
"NumberOfHistoryBuffers"=dword:0000000a
Problem permanently solved!