为何Slime inspect仅支持鼠标点击,如何通过键盘实现该功能
报错原因
你遇到的illegal sharp macro character: #\<报错是正常现象:#<XXX {ID}>是Common Lisp对无法通过读取器重建的对象的默认打印格式,仅用于展示,不支持作为输入表达式读取,所以你直接复制粘贴这段打印内容提交给inspect命令自然会触发读取错误。
键盘实现inspect的三种可行方法
- 方法1:直接使用REPL返回值历史变量
Common Lisp默认会把最近3次REPL返回值分别存在*(最近1次)、**(最近2次)、***(最近3次)变量中。你执行完history-entries-over-threshold后直接按C-c I,输入*回车即可,就能得到和鼠标右键inspect完全一致的效果。
如果不想用快捷键,也可以直接在REPL输入(inspect *)回车,效果相同。 - 方法2:光标定位后直接inspect输出对象
把光标移动到REPL输出的(#<HISTORY-ENTRY ...>)这段内容的任意位置,调用slime-inspect命令(默认快捷键C-c C-v i),SLIME会自动识别光标处的Lisp对象,无需手动输入表达式直接打开inspect缓冲区。 - 方法3:临时存储后按需inspect
如果你需要反复查看该结果或者其中的单个元素,可以先把结果绑定到临时变量:
之后就可以按需inspect整体或单个元素:(defparameter *history-entries* history-entries-over-threshold);; 查看整个列表 (inspect *history-entries*) ;; 查看列表中第1个元素 (inspect (first *history-entries*)) ;; 查看列表中第5个元素 (inspect (nth 4 *history-entries*))
内容的提问来源于stack exchange,提问作者Pedro Delfino
相关产品推荐
相关产品推荐

