- 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/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 11 个月前关闭。 Improve this
这个问题在这里已经有了答案: JavaScript get clipboard data on paste event (Cross browser) (23 个回答) 关闭 8 年前。 我有一个
我有一个 NSTextView,用户可以将纯文本粘贴到其中。 当用户在粘贴板中有“foo”时,我想粘贴“bar”。换句话说,用户转到网络浏览器,选择“foo”,cmd+c,切换到我的 NSTextVi
我对 do.call 如何工作感到困惑。 dat <- data.frame(v1 = c("a", "a", "b", "b"), v2 = c("a", "b"
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我刚刚熟悉 VBA 和我的代码 For k = 3 To ThisWorkbook.Sheets.Count ThisWorkbook.Sheets(k).Activate ActiveSheet.C
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
这个问题在这里已经有了答案: Intercept paste event in Javascript (4 个答案) 关闭 9 年前。 我需要更改粘贴事件的标准行为。我想将 Paste 事件的执行延
只执行一次粘贴我可以使用: noremap p p:let @"="" 粘贴后清空寄存器,后面的粘贴就失效了。然而,将发生的是更新撤消的空粘贴。因此按 p 3 次将需要 3 撤消调用以撤消初始粘贴。
在一个项目中,我发现一些 css 文件“闻起来”就像其中有复制粘贴的规则。 我想知道您检测文件中复制粘贴内容的策略是什么。 只是出于好奇,我想听听您显示文件相似性的提示和技巧! 最佳答案 试试 Sim
考虑以下示例: plot(c(2,4,6)~c(1,2,3),xlab="x", ylab=expression(paste('flux (g ',CO[2]~m^{-2}~h^{-1},')')))
对我来说是真正的问题,因为我不知道解决它。 我编写的 jQuery 脚本应该获取“粘贴”操作的输入值,并通过 ajax 将其传递给 codeigniter Controller 。 它实际上工作得很好
这是我正在尝试解决的问题 - 我完全不确定它是否可能。我有一个网络应用程序,我需要启用从应用程序到应用程序的数据复制/粘贴,但我遇到了粘贴问题。如果我使用 CTRL + V 快捷方式过去,我可以使用
这个问题已经有答案了: Printing newlines with print() in R (5 个回答) 已关闭 8 年前。 使用paste()函数时如何插入新行或者任何在 R 中连接字符串的函
我正在使用 sfsmisc 包中的 pretty10exp() 来使科学记数法看起来更好。例如: library(sfsmisc) a pretty10exp(a, digits.fuzz=3) #
我在下面的数据框中有两列,每一列都有按照特定顺序的级别: head(x1) soa congruency 1 200 9 2 102 2 3 68
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我有一个 edittext 字段,当我想在上面粘贴某人时,“粘贴”弹出窗口的文本颜色(系统默认“粘贴”弹出窗口,不是自定义的)不是与应用程序的全局文本颜色相同,仍然是黑色,很难阅读: 这是我的整体主题
我想自定义 matplotlib 图像显示,以便我可以键入 control-c,它将图像复制到剪贴板,然后我可以将它复制到 openoffice 电子表格以组织我所有的原始数据和图像结果。有什么办法吗
我有一个函数可以计算一些东西,然后将其分配给一个矩阵。该矩阵的名称来自粘贴语句(基于其他一些当前值)。然后我想将 dimnames 分配给矩阵,但不知道如何理解粘贴的名称。 事情是这样的: funct
我是一名优秀的程序员,十分优秀!