如何查找Swift REPL的命令历史记录
我一直在Swift REPL(在macOS上)中输入命令,而不是向后滚动查看我的命令历史记录,我想知道是否有一个文件或数据库可以像在其他REPL(例如python)中一样保存历史记录,我可以查看 这可用吗?Swift REPL(它实际上以REPL模式启动lldb调试器) 使用libedit进行命令行编辑和历史记录。退出时,历史记录保存到文件如何查找Swift REPL的命令历史记录,swift,read-eval-print-loop,Swift,Read Eval Print Loop,我一直在Swift REPL(在macOS上)中输入命令,而不是向后滚动查看我的命令历史记录,我想知道是否有一个文件或数据库可以像在其他REPL(例如python)中一样保存历史记录,我可以查看 这可用吗?Swift REPL(它实际上以REPL模式启动lldb调试器) 使用libedit进行命令行编辑和历史记录。退出时,历史记录保存到文件~/.lldb/lldb repl history (比较) 弄清历史应该不太难 libedit源代码中的文件格式。下面是一个简单的例子。 在REPL会话之后
~/.lldb/lldb repl history
(比较)
弄清历史应该不太难
libedit源代码中的文件格式。下面是一个简单的例子。
在REPL会话之后
$ swift
Welcome to Apple Swift version 3.1 (swiftlang-802.0.53 clang-802.0.42). Type :help for assistance.
1> let a = 1
a: Int = 1
2> let b = 2
b: Int = 2
3> print(a + b)
3
4> ^D
$swift
欢迎使用苹果Swift版本3.1(swiftlang-802.0.53 clang-802.0.42)。类型:帮助寻求帮助。
1> 设a=1
a:Int=1
2> 设b=2
b:Int=2
3> 打印(a+b)
3.
4> ^D
历史文件包含
_HiStOrY_V2_
let\040a\040=\0401\012
let\040b\040=\0402\012
print(a\040+\040b)\012
_历史2_
设\040a\040=\0401\012
让\040b\040=\0402\012
打印(a\040+\040b)\012
@马丁R:但是你可以访问历史上早期课程的条目。我想我的下一个问题是我们如何将其翻译成可读的格式,但谢谢你@我不知道libeditmacos使用的是哪一个版本,但这里有一个版本的历史。c:。可以看到,C库函数strvis/strunvis用于转义/取消转义输入行。空格被八进制转义序列替换。有几个请求“保存”当前的REPL会话。大多数请求需要的东西实际上是一个有效的swift文件,这非常困难,因为您可以执行swift文件中不合法的所有操作(重新定义类等)。那些请求已经停止了。。。但是,一个简单的“转储我在这个会话中键入的文本”命令应该非常容易实现。请随时在bugs.swift.org上提交此增强请求,或者如果您感到有冒险精神,请尝试自己破解它!