在 Mac 上的 Anaconda-Python REPL 中禁用括号粘贴模式

在 Mac 上的 Anaconda-Python REPL 中禁用括号粘贴模式

有一件事我再也无法在 Mac 上做了:在文本编辑器中输入一堆 Python,从命令行启动 Python 环境,然后将一些快速命令粘贴到解释器中。括号粘贴模式将多行块粘贴为某种突出显示的单行:

在此处输入图片描述

它不会直接运行,我必须按 Enter 键才能将突出显示的文本发送到解释器。当我这样做时,Python 不喜欢它:

在此处输入图片描述

奇怪的是,这种情况不会发生在命令行本身,只会发生在 Python 环境中。无论我在 Mac 终端还是 XQuartz xterm 中启动 Python,都会发生这种情况。

我认为问题出在 bracketed-paste-mode 上。我在以下网址找到了一些禁用该模式的提示:狂欢或者,但没有找到任何适用于 csh/tcsh 的内容。printf '\e\[?2004l'或者更标准printf '\033\[?2004l'对我来说不起作用。

终端命令行本身不处于括号粘贴模式。当我启动 Python 时,Python 环境处于括号粘贴模式。当我离开环境时,shell 再次不处于括号粘贴模式。所以不知何故,这种模式只在 Python 环境中触发……而我无法printf在此环境中执行转义代码。

答案1

\e是非标准的;\033是标准的。

要查看的地方不在 csh/tcsh 中,但是Python例如,在最近的 brew Python 构建中,粘贴到 Python REPL 中出现问题(HomeBrew#68193)。

根据一条评论卡洛·卡布雷拉,问题出在 readline 8.1(例如,使用 bash 开发的库),它又提到使用 readline 8.1 时 rlwrap 提示消失Felix C. Stegerman 的消息。建议的解决方法是在 中配置行为.inputrc,例如,

echo "set enable-bracketed-paste off" >> ~/.inputrc

Carlo Cabrera 提到了一篇讨论该主题的博客。xterm FAQ 中有一个更全面的观点:括号粘贴能解决我的问题吗?,扩展于XTerm – 括号粘贴

相关内容