如何阻止rlwrap --remember将版本版权信息纳入补全候选列表?
解决方法
是有办法实现只补全你手动输入的内容的,你可以通过组合rlwrap的内置参数实现需求,具体方案如下:
方案1:临时生效(直接在启动命令中加参数)
你可以添加--prompt-regex和--forget-regex两个参数和--remember配合使用,完整启动命令如下:
rlwrap --remember --prompt-regex '^- ' --forget-regex '^(Standard ML of New Jersey|\[built:)' sml
参数说明:
--prompt-regex '^- ':指定SML运行环境的提示符规则为行首的-,rlwrap识别到提示符后,只会将提示符后你手动输入的内容纳入补全记忆库。默认未指定提示符时,rlwrap会将所有终端输出的词汇都作为补全候选,这就是你输入Jer会补全出启动信息中Jersey的原因。--forget-regex '^(Standard ML of New Jersey|\[built:)':匹配所有版本、编译时间相关的启动输出行,被该正则匹配到的行内容不会被加入补全词库,你可以根据自己实际的启动输出内容调整正则规则,覆盖所有需要排除的行。
方案2:永久生效(写入rlwrap配置文件)
你可以将SML的专属配置写入rlwrap的配置文件,后续不需要每次输入长命令:
- 打开(如果不存在则新建)
~/.config/rlwrap/sml文件 - 写入以下内容:
remember prompt-regex=^- forget-regex=^(Standard ML of New Jersey|\[built:)
- 保存退出后,后续直接执行
rlwrap sml即可自动加载配置,实现需求。
内容的提问来源于stack exchange,提问作者Flux
相关产品推荐
相关产品推荐

