有一件事我再也无法在 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 – 括号粘贴