matlab'evidence removio':删除最后显示的命令

时间:2017-07-02 20:16:54

标签: matlab

我想从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

但是我只能访问最后一个类型的命令(通过命令历史记录) - 而不是最后一个显示的命令(这是理想的)。任何想法如何解决这个问题?

1 个答案:

答案 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课程中导致内部存储的偏移问题,因此使用风险自负。