Python
我通过从 Bash 命令行发出来使用没有 GUI/IDE 的 Python 。我在 Cygwin 环境中使用它,该环境在许多方面表现得像 Linux 系统。
用于 Python 命令行发出的命令历史记录的文件存储在~/.python_history
. 我可以使用 vim 的Buffer Explorer轻松搜索和拉取内容以进行操作。也很容易将操作过的内容拖入系统剪贴板,以便在 Python 命令行中粘贴。(另一方面,对于命令的更多战术性修改,我只是使用 readline 来 vim 以前的命令和单行的基础。)
我发现~/.python_history
在每个命令之后都不会更新。我不确定它多久更新一次,但很明显退出 Python 会导致它更新。使用 Ctrl+Z 进入后台不会。
(是否有从 Python 命令行强制更新到的快捷方便的方法~/.python_history
?
自从我最初发布这个问题以来,我有机会将 Linux (Ubuntu) 视为 VirtualBox 虚拟机。但是,启动整个客户机操作系统只是为了能够以调色板的形式访问命令历史记录,而不是使用向上箭头键一次一行(或者等效地,k
如果一个人的命令行编辑器是设置为 Vim)。我什至对 Bash 的“修复命令”(fc)命令的 Python 对应物感到满意,即使我必须删除所有我不想执行的行。
各种尝试
根据回复,我尝试 importing readline.write_history_file
,但它未被识别,即使它readline
本身是:
$python
Python 3.8.10 (default, May 20 2021, 11:41:59)
[GCC 10.2.0] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
# Show modules
>>> import sys
>>> modulenames = set(sys.modules) & set(globals())
>>> allmodules = [sys.modules[name] for name in modulenames]
>>> print(allmodules)
[<module 'sys' (built-in)>]
# Fail to import readline.write_history_file
>>> import readline.write_history_file as whf
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'readline.write_history_file'; 'readline' is not a package
# However, readline itself imports
>>> import readline
>>> readline.get_history_item(2)
'version'
readline
似乎确实是 Cygwin 存储库的一部分,所以我没有尝试pip install readline
:
搜索 Cygwin 包
readline
(然后浏览器搜索字符串python
)似乎最相关的一个结果
dll
显示文件名中带有、py
和pyc
files ,但我不确定模块本身readline[s]
采用的形式是什么意思。我欢迎对此进行澄清/解释。readline
事实上,我不愿意尝试在 Cygwin 包管理器之外安装任何东西,pip
因为担心会产生不一致。