我想从matlab控制台显示中删除我刚输入的内容 - 以及最后显示的命令。毋庸置疑,这对于恶作剧者来说是理想的(但这当然仅限于学术目的)。这是我所得到的(基于此related answer):
hist = com.mathworks.mlservices.MLCommandHistoryServices.getSessionHistory; %get history
last = strjoin(cell(hist(end-2:end)),' '); %convert history to string
fprintf(repmat('\b',1,numel(last))); %replace characters of string with whitespace
但是我只能访问最后一个类型的命令(通过命令历史记录) - 而不是最后一个显示的命令(这是理想的)。任何想法如何解决这个问题?
答案 0 :(得分:4)
免责声明:我不建议这样做。
MATLAB CommandWindow内容存储为CmdWinDocument
,它是Java PlainDocument
类型的扩展,以及Document
类型的接口。可以使用以下命令访问当前窗口:
com.mathworks.mde.cmdwin.CmdWinDocument.getInstance
理论上,您应该能够使用以下内容从命令窗口中删除文本:
doc = com.mathworks.mde.cmdwin.CmdWinDocument.getInstance
endpos = doc.getEndPosition
doc.remove(endpos-10,10)
理论上,它会从文档中删除最后10个字符。您可能还必须调用removeUpdate
函数。显然,这个命令将在此过程中附加到文档中,从而导致问题。我已经不对此进行了测试,您可能会在CmdWinDocument
课程中导致内部存储的偏移问题,因此使用风险自负。