iPython不读取〜/ .inputrc

时间:2014-02-15 03:39:15

标签: python macos ipython readline

我正在使用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。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

来自IPython Documentation

  

所有这些功能都基于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选项。

将键绑定模式设置为vi:

生成空白配置文件:

ipython profile create [profile-name]

运行命令应该显示生成的配置文件的路径, 这是python(.py)文件。

  

来自:Source: Options Reference

     

从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:

Source: Manging Profiles

在终端上,键入以下命令(不要键入大括号 从字面上看,它们只是实际名称的占位符 配置文件)。

$> ipython --profile={profile-name}