我正在尝试找到一种方法,当您尝试此命令时:
custprmt: function(pstr, ifbold) {
if(ifbold === '-makebold') {
localStorage.setItem('myNEWprompt', pstr);
this.set_prompt('[[b;var;]' + pstr +' ')
}
else {
localStorage.setItem('myNEWprompt', pstr);
this.set_prompt(pstr +' ')
}
},
它将根据用户输入的内容生成自定义提示,并将其保存到本地存储。 然后使用以下代码:
$(document).ready(function () {
if (myNEWprompt) {
set_prompt(myNEWprompt)
} else {
set_prompt('guest$ ')
}
});
它将在页面加载时加载自定义提示。我的问题是第二组代码没有加载保存的提示。我觉得这可能是因为
set_prompt
但我不确定,我尝试过 this.set_prompt
和 prompt:
但没有效果。我不太确定该怎么办,我不知道这是否可能,所以请帮忙,我们将非常感谢您的帮助:)
看起来您想要带有选项的命令。有一些辅助方法可以实现这一点
$.terminal.parse_options()
。
您的代码可以如下所示:
$('body').terminal({
custprmt(...args) {
const options = $.terminal.parse_options(args);
if (options._.length !== 1) {
this.error('Usage: custprmt prompt [options]');
} else {
let prompt = options._[0];
if (options.makebold) {
prompt = '[[b;white;]' + prompt + ']';
}
localStorage.setItem('myNEWprompt', prompt);
this.set_prompt(prompt);
}
}
}, {
checkArity: false,
greetings: false,
completion: true,
prompt: localStorage.getItem('myNEWprompt') ?? 'guest$ '
});
但请注意,名称较长的选项需要双破折号。所以你需要输入:
custprmt "hello> " --makebold
如果您想在提示后有一个空格,则需要对提示加引号。
这是一个工作演示。
当您解析选项时,您的语法与 Yargs 类似。
您有一个对象,其中每个选项作为字段,如果该选项是一个标志,则它具有 true 或 false 值,或者如果它是一个带有参数的选项,则它具有一个字符串作为值。如果是像您这样的布尔选项,您可以使用第二个参数来指示该选项是布尔值,因此可以在普通参数之前使用它。
示例:
$.terminal.parse_options(args, {boolean: ["makebold"]});
使用此功能时,您可以使用如下命令:
custprmt --makebold "hello> "
输出将是相同的,makebold选项将是一个布尔标志。