- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我的终端遇到了一个问题,当我粘贴文本时,它的前缀是 00~
,后缀是 01~
。
例如,我将突出显示文本并按下 Command-C
。然后我将 Command-V
插入终端,我看到那些奇怪的字符在文本的开头和结尾弹出。
例如,我可以突出显示 text
并将其粘贴到终端中。然后我看到 00~text01~
。
文本可以来自任何地方,甚至来自终端本身。我没有安装任何复制/粘贴插件,这只是普通的复制/粘贴。我使用的是默认的 Mac 终端,没有任何修改。
我在网上做了一些搜索,显然粘贴将文本包装在特殊字符中,这样某些应用程序就会看到这是粘贴的文本并会正确处理它。但是,终端没有正确处理这个问题,因此没有删除奇怪的字符。显然,这种粘贴模式称为“括号粘贴模式”http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Bracketed-Paste-Mode
我发现另一个问题给出了如何在 linux 机器上解决这个问题的解决方案,但在尝试该解决方案后我仍然遇到同样的问题。
有人能告诉我如何禁用终端的括号粘贴模式吗?或者告诉我摆脱这些烦人字符的正确方法?
最佳答案
文本已从某处(可能来自同一终端)进入“系统”(例如 X、MacOS/Aqua)复制缓冲区。此处未更改文本。
文本被粘贴到终端;也就是说,“系统”确保终端(例如 xterm
)从复制缓冲区接收未改变的字符序列。终端知道这是一个粘贴,而不是键盘输入。
终端将缓冲区中的字符序列发送到在前台运行的程序(shell、编辑器等)。对于程序来说,接收到的数据与用户通过键盘输入的数据无法区分。
这种透明性(或不透明性?随便什么)通常是一件好事,就像一般的透明管道管道的 Unix 范例一样。但有时,如果程序知道数据已被粘贴,则它们可以更好地处理数据。例如,像 vim 这样的编辑器可以关闭自动缩进——毕竟,代码可能已经缩进了!
输入带括号的粘贴。出于主要原因,透明数据管道的范式不能改变;但是数据可以用通常不会出现在终端输入中的序列来标记其开始和结束。如果终端是这样配置的——对于 xterm,配置将是发送 ESC [ ? 2 0 0 4 h
— 粘贴的数据用转义序列括起来:ESC [ 2 0 0 ~ <buffer contents> ESC [ 2 0 1 ~
.
前台程序接收到这个“修饰过的”数据,并由程序来处理它。天真的程序将所有这些都视为用户输入,这就是您所看到的。
可以在 this article 中找到关于括号粘贴的很好的讨论。 .
您的情况有两个问题:终端意外地以括号粘贴模式结束;并且接收程序(大概是 shell)不处理它。
一个解决方案是 user83536 的:识别使终端处于该状态的程序并通过包装器调用它,该包装器在程序结束后简单地再次关闭括号粘贴模式。
程序可能尝试关闭括号粘贴模式但失败了。原因之一可能是它发送了错误的转义序列。尝试设置 TERMINAL
环境变量设置为最能描述您的终端的值。
尝试关闭有问题的应用程序中的括号粘贴。在 vim 中会说 set t_BE=
.这可以防止 vim 将终端置于括号粘贴模式,并且当它在 session 中设置时,将“结束括号粘贴模式”发送到终端。
接受带括号的粘贴。这似乎是个好主意。对于使用 readline
的 bash 和其他程序一个会放set enable-bracketed-paste on
.对于 vim,可以遵循建议 here.
关于linux - 如何在 Mac OS X 默认终端上禁用来自 "bracketed paste mode"的奇怪字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42212099/
更新到 Xcode 12.2 后,由于与 Apple Silicon 相关的链接错误,我的项目开始无法编译。我似乎已经修复了大部分问题,但是一个构建静态链接框架的子项目给我带来了问题。然而,具有明显相
我有一台旧的 MacBook Pro,我在其中制作了两个应用程序并提交到应用程序商店。所以基本上签名身份在该机器的钥匙串(keychain)中。在 Mavericks 升级后,我不得不从那台计算机转移
我正在 MAC OSX 10.6 上编写一个示例应用程序,其 gcc 版本为 4.2。我正在使用 gcc 4.2 版编译应用程序。它在同一台机器上工作正常,但在 MAC OSX 10.5 (gcc 4
这是我的简单 mac 地址生成器: private String randomMACAddress(){ Random rand = new Random(); byte[] macA
我一直在寻找一种将十进制 MAC 地址转换为十六进制地址的方法。 例如 170.187.204.0.17.34至AA:BB:CC:00:11:22 . 致Convert HEX to Decimal
我想使用 UISceneSession 的委托(delegate)方法当用户将注意力从应用程序(窗口)移开,然后又回到应用程序(窗口)时,生命周期有助于通知我的 Mac Catalyst 应用程序。
我在签署 Mac 应用程序安装程序时遇到问题,我计划在 Mac 应用商店之外分发该应用程序。我正在使用开发人员安装程序证书来签署应用程序,但它给出了一些错误。下面是我用来签署应用程序的命令。 prod
Mac Catalyst 允许调整窗口大小,有没有办法为 Mac Catalyst 应用程序提供最小窗口大小? 最佳答案 只需将以下代码块添加到您的 application:didFinishLaun
这是一个非常理论性的问题,但对我来说很安静,即我如何进行下一步。 我正在开发一个SwiftUI MacOS应用程序,用户可以在其中上传自己的文件。元数据将存储在CoreData中,而我将文件手动存储在
滑动删除在 maccatalyst 中不起作用。相同的代码在 iPad 上运行良好。 在 maccatalyst 中未调用 UITableview trailingSwipeActionsConfig
我有两台 Mac,在进行 iPad 开发时,如果可以让另一台 Mac 启动模拟器并在构建完成后加载应用程序,我很感兴趣。 如果 iPad 应用程序在一台 Mac 屏幕和 Xcode 的模拟器中运行,所
我有一个用 objective-c 开发的 mac 应用程序。cpp 中还有另一个命令行中间应用程序,它是 native 主机应用程序,用于接收来自 chrome 扩展的消息。每当中间应用程序从扩展程
是否可以使用来自 Comodo 或 Thawte 的代码签名证书来签署应用程序并通过 Gatekeeper,或者我需要为此目的拥有 Mac 开发者订阅? 最佳答案 您必须是 Mac Developer
我正在使用 C++ 和 OpenGL/SDL 编写一个游戏,使用 Visual Studio 作为我的 IDE。我没有 Mac,甚至对这个平台都不熟悉。但我还是想发布给 Mac 用户。 我有三个问题。
我想将 MAC 地址 00163e2fbab7(存储为字符串)转换为其字符串表示形式 00:16:3e:2f:ba:b7。最简单的方法是什么? 最佳答案 使用一种完全迂回的方法来利用现有的一次将两个十
无法连接到Mac上的MySQL工作台。我收到以下错误:无法连接,服务器可能未运行。无法连接到‘127.0.0.1’上的MySQL服务器(61)如有帮助,将不胜感激。。谢谢!
我已经搜索了很长时间,似乎无法找到这个问题的答案。在 SO 上只找到两个问题/答案,但他们仍然没有回答这个问题 ( https://stackoverflow.com/search?q=netcore
我们在 Docker for Mac 中有一个 LoadBalancer 真是太酷了。 我对创建的端口有疑问: apiVersion: v1 kind: Service metadata: nam
我有一个我一直在从事的小型开源 OSX 项目,我想在 App Store 之外分发。 随着即将发布的 Mountain Lion,我想提供一个证书,以减少安装过程中的痛苦。 使用 App Store,
我的一台 Mac 没有互联网连接。我需要使用 docker pull。我的想法是,我将在我的一台具有互联网连接的 Mac 中使用 docker pull,然后将其复制到我没有互联网连接的 Mac。如何
我是一名优秀的程序员,十分优秀!