You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让jQuery Terminal终端提示符保存到Local Storage并正常加载?

问题描述

我想实现以下功能:通过自定义命令custprmt设置终端提示符,同时将其保存到Local Storage;页面加载时读取保存的提示符并设置,若未保存则使用默认的guest$ 。但页面加载代码无法加载已保存的提示符,尝试过set_prompt、this.set_prompt、prompt:等方式均无效,请求协助解决。


相关代码

自定义命令代码

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$ ')
  }
});

问题分析与修复

核心问题

  1. 未正确读取Local Storage数据:页面加载代码直接使用myNEWprompt变量,但该变量并未从Local Storage中获取值,必须通过localStorage.getItem('myNEWprompt')读取。
  2. 缺少终端实例引用:set_prompt是终端实例的方法,不能全局直接调用,需要像自定义命令里那样,通过终端实例对象调用。

修复后的页面加载代码

$(document).ready(function () {
  // 替换为你实际的终端实例变量名(比如初始化时创建的term对象)
  const terminalInstance = window.yourTerminalInstance;
  const savedPrompt = localStorage.getItem('myNEWprompt');
  
  if (savedPrompt) {
    terminalInstance.set_prompt(savedPrompt + ' ');
  } else {
    terminalInstance.set_prompt('guest$ ');
  }
});

进阶优化(保留加粗状态)

如果需要保留提示符的加粗格式,建议在Local Storage中同时存储格式信息:

修改自定义命令代码

custprmt: function(pstr, ifbold) {
  const isBold = ifbold === '-makebold';
  // 序列化对象存储格式与文本
  const promptData = JSON.stringify({
    text: pstr,
    isBold: isBold
  });
  localStorage.setItem('myNEWprompt', promptData);
  
  const promptStr = isBold ? '[[b;var;]' + pstr +' ' : pstr + ' ';
  this.set_prompt(promptStr);
},

对应页面加载代码

$(document).ready(function () {
  const terminalInstance = window.yourTerminalInstance;
  const savedPromptData = localStorage.getItem('myNEWprompt');
  
  if (savedPromptData) {
    const { text, isBold } = JSON.parse(savedPromptData);
    const promptStr = isBold ? '[[b;var;]' + text +' ' : text + ' ';
    terminalInstance.set_prompt(promptStr);
  } else {
    terminalInstance.set_prompt('guest$ ');
  }
});

额外注意

确保页面加载时终端实例已经完成初始化,如果终端是异步创建的,需要把读取设置的代码放在终端初始化完成的回调函数中执行。

内容的提问来源于stack exchange,提问作者NotHim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 05:58:20