我正在使用iPython。文档说我应该能够使用inputrc重新映射readline库的密钥。这是我在inputrc中的内容:
set editing-mode emacs
set keymap emacs
Meta-h: backward-word
Meta-s: forward-word
Control-h: backward-char
Control-s: forward-char
Control-n: previous-history
Control-t: next-history
Control-p: yank
Meta-p: yank-pop
当我加载iPython时,这些映射根本不起作用。我是OS X 10.9 Mavericks。我没有看到任何警告使用libedit而不是readline。有什么想法吗?
答案 0 :(得分:3)
所有这些功能都基于GNU readline库,它具有极其可定制的界面。通常,readline是通过定义库行为的文件配置的;有关此语法的详细信息,请参阅系统或Internet上提供的readline文档。 IPython不会直接读取此文件(如果存在),但它确实支持通过简单的接口传递给readline有效选项。简而言之,您可以通过在配置文件中设置以下选项来自定义readline(请注意,无法在命令行中指定这些选项):
readline_parse_and_bind:它包含要通过readline.parse_and_bind()命令执行的字符串列表。可以通过阅读GNU readline库的文档找到此类有效命令的语法,因为这些命令属于readline在其配置文件中接受的类型。
readline_remove_delims:要从readline使用的默认单词分隔符列表中删除的字符串,以便可以对包含它们的字符串执行完成。除非您知道自己在做什么,否则不要更改默认值。
因此,您必须在配置文件中设置readline_parse_and_bind
(默认情况下,这位于/path/to/ipython/dir/profile_default/ipython_config
。您可以使用ipython profile create
生成默认配置示例。
答案 1 :(得分:1)
我找到的方法是创建一个新的IPython配置文件 启用了vi-keys选项。
生成空白配置文件:
ipython profile create [profile-name]
运行命令应该显示生成的配置文件的路径, 这是python(.py)文件。
从5.0开始,IPython使用prompt_toolkit代替readline, 因此它可以识别以':'结尾的行并缩进下一行, 同时在'加注'或'返回'后自动进行缩进,以及 支持真正的多行编辑以及语法着色 在版本期间。
此功能不再使用readline库,因此它会 不尊重你的〜/ .inputrc配置(或任何你的文件 INPUTRC环境变量指向)。
特别是如果你想将输入模式改为vi,你会的 需要设置
TerminalInteractiveShell.editing_mode
配置 选择IPython。(强调我的)
因此,导航到ipython_config.py
文件,并确保
其中包含以下几行:
c = get_config()
c.TerminalInteractiveShell.editing_mode = 'vi'
在终端上,键入以下命令(不要键入大括号 从字面上看,它们只是实际名称的占位符 配置文件)。
$> ipython --profile={profile-name}