- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑 4 : 事实证明,这实际上只是一般的TTY输入的限制;没有任何关于 OCaml、Coq 或 Emacs 的特定原因导致问题。
我正在 Emacs 中使用 Proof General 开发 Coq 程序,但我发现输入过长的错误。如果一个地区提交到coqtop
通过 Proof General 包含超过 1023 个字符,Proof General(虽然不是 Emacs)在等待响应时挂起,并且 *coq*
缓冲区包含一个额外的 ^G
对于超过 1023 个字符的每个字符。例如,如果将 1025 个字符的区域发送到 coqtop
,然后是 *coq*
缓冲区将以两个额外的字符结尾 ^G^G
.我无法继续超过文件中的这一点,我必须杀死 coqtop
进程(使用 C-c C-x 或来自终端的 kill
/killall
)。
有关此限制的一些信息来自 coqtop
本身。如果生成一个 1024 个字符或更长的字符串并将其输入,例如通过运行
perl -e 'print ("Eval simpl in " . (" " x 1024) . "1.\n")' | coqtop
coqc
也能正常工作。)但是,如果我运行
coqtop
在终端中,我不能在一行中输入超过 1024 个字符,包括结束返回字符。因此,输入 1023 个字符的行然后按回车即可;但是在输入 1024 个字符后,按任意键,包括返回(但不包括删除等),只会发出哔哔声。事实证明,
ocaml
(OCaml 顶层)具有相同的行为:
perl -e 'print ((" " x 1024) . "1;;")' | ocaml
ocaml
我不能在一行中输入超过 1024 个字符从终端。因为我的理解是
coqtop
依赖于 OCaml 顶层(以
coqtop -byte
运行时更明显),我想这是一个相关的限制。
ocaml
和 coqtop
是否强制执行此字符限制?为什么只针对来自终端或 Emacs 的输入,而不是来自管道或文件的输入? ^G
? 最佳答案
我将此报告为 issue 5678在 OCaml 错误跟踪器上,用户 dim 解释说这不是 OCaml 本身的问题,而是 TTY 输入的限制。问题是这个。由于文本在用户点击返回之前不会发送到运行命令,因此所有等待的输入必须存储在某个地方。存储它的缓冲区,称为输入队列或提前输入缓冲区,具有固定大小,由 C 常量 MAX_INPUT
控制。 . This constant is equal to 1024 on Mac OS X .像这样的缓冲允许有用的输入处理,例如在发送之前删除字符。从终端运行的所有命令(例如使用 readline
库)不做任何特殊的事情都会表现出这种行为;例如,cat
以完全相同的方式窒息。
为了避免这种行为,可以取消设置 ICANON
标志,例如通过运行 stty -icanon
;这会将 TTY 放入 non-canonical input mode ,其中在发送到命令之前根本不处理输入。这意味着编辑变得不可能:删除、向左和向右箭头等都输入它们的字面等效项( ^?
、 ^[[D
、 ^[[C
、...);类似地, ⌃D 不再发送 EOF,而只是一个文字控制字符。然而,对于我的特定用例,这(到目前为止!)似乎是理想的,因为 Emacs 正在为我处理我的所有输入。 ( 编辑: 但有更好的选择!)(像 readline
这样的库,据我所知,也更改此设置,但要注意控制字符和处理编辑等,它们自己。)恢复规范模式,可以运行 stty icanon
.
ledit
工具将行编辑环绕作为参数提供给它的程序,因此 ledit coqtop
工作正常(如果奇怪;我更喜欢 ledit -l 65536
以避免滚动),但与 Emacs 交互很奇怪。 rlwrap
tool 做同样的事情,但让另一个程序从 TTY 读取;因此,虽然它可以接收更长的输入,但按 Enter 并将它们发送到包装的命令的行为非常奇怪,最终需要终止该命令。
编辑:在我的特定用例中,我也可以简单地告诉 Emacs 使用管道而不是 PTY,从而一举解决问题。 Emacs 变量 process-connection-type
控制如何与附属过程通信; nil
表示使用管道,非 nil
表示使用 TTY。 Proof General 使用变量 proof-shell-process-connection-type
以确定应如何设置。使用管道可以解决所有 1024 个字符限制的问题。
关于emacs - 无法向 OCaml 顶层和 coqtop(和 Proof General)提供长(1024+ 个字符)输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11321829/
我有一个如下所示的数据框: import pandas as pd d = {'decil': ['1. decil','1. decil','2. decil','2. decil','3. dec
我有一些数据想要添加到我的应用中...大约 650 个类别(包括名称 + ID 号),每个类别平均有 85 个项目(每个都有一个名称/ID 号)。 iPhone会支持这么大的plist吗?我想首先在
我目前正在使用 Python 从头开始实现决策树算法。我在实现树的分支时遇到了麻烦。在当前的实现中,我没有使用深度参数。 发生的情况是,要么分支结束得太快(如果我使用标志来防止无限递归),要么如果
我在 Stack 上发现了这个问题 - Measuring the distance between two coordinates in PHP 这个答案在很多方面似乎对我来说都是完美的,但我遇到了
我目前正在清理一个具有 2 个索引和 2.5 亿个事件行以及大约同样多(或更多)的死行的表。我从我的客户端计算机(笔记本电脑)向我的服务器发出命令 VACCUM FULL ANALYZE。在过去的 3
这一切都有点模糊,因为该计划是相当深入的,但坚持我,因为我会尽量解释它。我编写了一个程序,它接受一个.csv文件,并将其转换为MySQL数据库的INSERT INTO语句。例如: ID Numbe
我有一个地址示例:0x003533,它是一个字符串,但要使用它,我需要它是一个 LONG,但我不知道该怎么做:有人有解决方案吗? s 字符串:“0x003533”到长 0x003533 ?? 最佳答案
请保持友善 - 这是我的第一个问题。 =P 基本上作为一个暑期项目,我一直在研究 wikipedia page 上的数据结构列表。并尝试实现它们。上学期我参加了 C++ 类(class),发现它非常有
简单的问题。想知道长 IN 子句是否是一种代码味道?我真的不知道如何证明它。除了我认为的那样,我不知道为什么它会闻起来。 select name, code, capital, pop
我正在尝试基于 C# 中的种子生成一个数字。唯一的问题是种子太大而不能成为 int32。有什么方法可以像种子一样使用 long 吗? 是的,种子必须很长。 最佳答案 这是我移植的 Java.Util.
我一直想知道这个问题有一段时间了。在 CouchDB 中,我们有一些相当的日志 ID……例如: “000ab56cb24aef9b817ac98d55695c6a” 现在,如果我们正在搜索此项目并浏览
列的虚拟列 c和一个给定的值 x等于 1如果 c==x和 0 其他。通常,通过为列创建虚拟对象 c , 一排除一个值 x选择,因为最后一个虚拟列不添加任何信息 w.r.t.已经存在的虚拟列。 这是我如
使用 tarantool,为什么我要记录这些奇怪的消息: 2016-03-24 16:19:58.987 [5803] main/493623/http/XXX.XXX.XXX.XXX:57295 t
我显然是 GitHub 的新手,想确保在开始之前我做的事情是正确的。 我想创建一个新的存储库,它使用来自 2 个现有项目的复刻/克隆。现有项目不是我的。 假设我想使用的 repo 被称为来自开发人员“
我的应用程序名称长度为 17 个字符。当安装在设备上时,它看起来像应用程序...名称。有没有办法在多行上显示应用程序名称?请帮忙。 最佳答案 不,你不能。我认为 iPad 支持 15 个字符来完整显示
我必须编写一个程序来读取文件中的所有单词,并确定每个单词使用了多少次。我的任务是使用多线程来加快运行时间,但是单线程程序的运行速度比多线程程序快。我曾尝试研究此问题的解决方案,但很多解释只会让我更加困
假设我在给定的范围内有一个位置pos,这样: 0 = newRange*newRange : "Case not supported yet"; // Never happens in my code
我试图在 Java 中将 unix 时间四舍五入到该月的第一天,但没有成功。示例: 1314057600 (Tue, 23 Aug 2011 00:00:00 GMT) 至 1312156800
我们的项目有在 CVS 中从现有分支创建新分支的历史。几年后,这导致了每次发布时更改的文件上的这种情况: 新版本:1.145.4.11.2.20.2.6.2.20.2.1.2.11.2.3.2.4.4
我有以下数据框: DAYS7 <- c('Monday','Tuesday','Wednesday','Thursday','Friday', 'Saturday', 'Sunday') DAYS
我是一名优秀的程序员,十分优秀!