티스토리 뷰

 

저는 에디터에 파일을 많이 띄워두는 편입니다. 아직 작업이 끝나지 않은 파일은 당장 쓰지 않더라도 띄워놔야 나중에 작업을 이어갈 수 있기 때문인데요. 가끔 실수로 에디터 창을 닫을 때가 있습니다. 요즘 웹브라우저는 마지막 세션을 그대로 복구할 수 있지만, 매트랩의 에디터는 그런 기능이 없습니다. 결국 기억을 더듬어서 파일을 하나씩 여는 수밖에 없습니다. 이런 사태를 방지하려면 사용자가 조심해서 써야 합니다만...

 

다행히 에디터를 복구할 방법이 있습니다. 매트랩이 설정파일들을 따로 모아두는 폴더가 있는데, 그 폴더에 xml 파일의 형태로 마지막 세션과 현재 세션의 m파일들이 담겨있습니다. 이 파일 정보만 꺼내서 복구할 수 있습니다. 아래는 그 복구코드입니다.

(원본: kr.mathworks.com/matlabcentral/answers/466648-how-to-reopen-matlab-scripts-function-when-the-editor-was-accidentally-closed)

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
%parse XML file
xmlFiles    = xmlread([prefdir filesep 'MATLABDesktop.xml']);
%Retrieve the "clients"
FileNodes   = xmlFiles.getElementsByTagName('Client');
%get the length of the FileNodes
nrFiles     = FileNodes.getLength;
%initialize Files
Files       = cell(nrFiles,1);
%initialize isFile
isFile      = zeros(nrFiles,1);
%Iterate over all Elements and check if it is a file.
for iNode = 0:nrFiles-1 % Java indexing.
    %Files
    Files{iNode+1} = char(FileNodes.item(iNode).getAttribute('Title'));
    %check if the "client" is a file:
    isFile(iNode+1) = ...
            exist(Files{iNode+1},'file') == 2 && ~(strcmp(Files{iNode+1},'Workspace'));
end
%remove the other files:
MyFiles = Files(find(isFile));
%open the files in the editor:
edit(MyFiles{:});
cs

 

 

여기에 몇가지 팁을 추가하자면,

  1. prefdir가 설정파일들을 모아둔 폴더입니다. 명령창에서 prefdir을 치면 해당 폴더를 알 수 있습니다.
  2. MATLABDesktop.xml.prev는 이전 세션의 파일목록 담겨있고, MATLABDesktop.xml에는 현재 세션의 파일목록이 담겨있습니다.
  3. 위 코드를 즐겨찾기로 만들어두면 조금 더 쉽게 파일을 복구할 수 있습니다. 즐겨찾기는 이 링크를 참고해보세요.

 

이 코드는 MathWorks Support Team에서 작년 6월에 올린 코드입니다. Mathworks에서도 문제는 인식하고 있으나 아직 공식적인 방법은 없다고 합니다. 대신 위와 같은 우회적인 방법을 제공하고 있네요.

 

이제 에디터를 실수로 닫아도 걱정하지 맙시다.

 

- 게으른 맽랩

댓글