gpt4 book ai didi

python - OS X 终端中 Python 解释器中的制表符补全

转载 作者:IT老高 更新时间:2023-10-28 20:29:42 26 4
gpt4 key购买 nike

几个月前,我写了一篇 blog post详细说明如何在标准 Python 交互式解释器中实现制表符补全——我曾经认为只有 IPython 才有的功能。由于 IPython unicode 问题,我有时不得不切换到标准解释器,因此我发现它非常方便。

最近我在 OS X 上做了一些工作。令我不满的是,该脚本似乎不适用于 OS X 的终端应用程序。我希望你们中的一些有 OS X 经验的人可以帮助我解决它,以便它也可以在终端中运行。

我正在复制下面的代码

import atexit
import os.path

try:
import readline
except ImportError:
pass
else:
import rlcompleter

class IrlCompleter(rlcompleter.Completer):
"""
This class enables a "tab" insertion if there's no text for
completion.

The default "tab" is four spaces. You can initialize with '\t' as
the tab if you wish to use a genuine tab.

"""

def __init__(self, tab=' '):
self.tab = tab
rlcompleter.Completer.__init__(self)


def complete(self, text, state):
if text == '':
readline.insert_text(self.tab)
return None
else:
return rlcompleter.Completer.complete(self,text,state)


#you could change this line to bind another key instead tab.
readline.parse_and_bind('tab: complete')
readline.set_completer(IrlCompleter('\t').complete)


# Restore our command-line history, and save it when Python exits.
history_path = os.path.expanduser('~/.pyhistory')
if os.path.isfile(history_path):
readline.read_history_file(history_path)
atexit.register(lambda x=history_path: readline.write_history_file(x))

请注意,我已经从我的博客文章的版本中稍微编辑了它,以便使用真正的选项卡初始化 IrlCompleter,这似乎是终端中 Tab 键输出的内容。

最佳答案

这应该可以在 Leopard 的 python 下工作:

import rlcompleter
import readline
readline.parse_and_bind ("bind ^I rl_complete")

而这个没有:

import readline, rlcompleter
readline.parse_and_bind("tab: complete")

保存在 ~/.pythonrc.py 并在 .bash_profile 中执行

export PYTHONSTARTUP=$HOME/.pythonrc.py

关于python - OS X 终端中 Python 解释器中的制表符补全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com