Python 3.13 REPL如何启用Vim或Emacs按键绑定?
在Python 3.13 REPL中启用Vim/Emacs按键绑定
Python 3.13的REPL默认改用prompt-toolkit作为输入处理库,不再依赖传统的readline,因此旧版依赖readline或~/.editrc的按键绑定配置会失效。以下是两种可行的解决方法:
方法一:强制REPL使用readline(复用旧配置)
这个方法可以直接沿用你之前的~/.editrc或~/.inputrc配置:
- 在shell的配置文件(如
~/.bashrc、~/.zshrc)中添加环境变量:export PYTHON_REPL_USE_READLINE=1 - 执行
source ~/.bashrc(对应你的shell配置文件)或重启终端,之后启动Python REPL就会回到readline处理模式,旧的按键绑定自动生效。
方法二:使用prompt-toolkit原生编辑模式(保留新特性)
如果想保留Python 3.13 REPL的新特性(如语法高亮、智能缩进提示),可以直接配置prompt-toolkit的编辑模式:
- 创建
~/.pythonrc.py文件,写入以下内容:from prompt_toolkit.shortcuts import set_preference from prompt_toolkit.enums import EditingMode # 启用Vim模式,如需Emacs模式则替换为EditingMode.EMACS set_preference(editing_mode=EditingMode.VI) - 在shell配置文件中添加环境变量,让Python启动时自动加载这个配置:
export PYTHONSTARTUP=~/.pythonrc.py - 执行
source命令或重启终端,之后启动REPL就会进入你设置的编辑模式。
临时启用方式(单次会话)
如果只需要在当前REPL会话中生效,可以直接执行:
- Vim模式:
import readline; readline.parse_and_bind('set editing-mode vi') - Emacs模式:
import readline; readline.parse_and_bind('set editing-mode emacs')
这种方式会临时切换回readline模式,仅对当前会话有效。
内容的提问来源于stack exchange,提问作者Ben Kovitz
相关产品推荐
相关产品推荐

