vim 에러 처리

Vim/Tutorial 2013. 2. 2. 04:21 |

만약, 터미널에서 vim으로 파일을 편집하다가 잠시 터미널로 나와서 다른 작업을 하고 실수로 다시 멀티태스킹했던 파일을 열 경우...(아래의 사진처럼)


즉, 파일을 두 번 열려고 할 경우 vim은 경고 메시지를 띄운다.


이런 에러가 나는 이유는..?

vim에서 파일을 열면 스왑(swap) 파일을 하나 생성한다. 생성된 스왑 파일은 원래 파일명 앞에 마침표(.)를 하나 붙여서 숨김 파일로 만들고, 뒤에는 .swp의 확장자명을 붙인다. 

이 스왑 파일에는 편집 과정의 모든 이력이 저장되어 실행 취소(undo) 용도로 사용되는데, vim이 정상적으로 종료되면 스왑 파일은 자동으로 삭제된다. 하지만 vim이 종료하지도 않았는데 또 같은 파일을 열면 스왑 파일을 만들지 못하기 때문에 에러가 발생한다.

이 에러에 대해 vim에서는 다섯 가지 해결책을 제시한다. 

               읽기 전용으로 파일을 연다.

E                무시하고 파일을 편집한다.

R                복구 모드로 파일을 연다.

Q                vim을 종료한다.

A                vim을 종료한다.(core 파일을 만들 수 있다면 만든다. 디버깅 용)


읽기 전용(O)으로 열어보는 경우, 기존 스왑 파일에 아무런 영향을 주지 않는다.  그러나 편집(E)으로 열어보는 경우, 나중에 서로 덮어쓰는 경우가 발생할 수 있다.


복구 모드(R)는 vim이 비정상적으로 종료하여 스왑 파일의 내용이 원본 파일에 저장되지 못한 경우에 사용된다. 이때는 안내 메시지가 약간 다르기 때문에 쉽게 판단할 수 있다.

이를 테면, 위의 사진에는 process ID 부분의 pid 번호 뒤에 'still running' 이라는 메시지가 있었지만, 비정상적으로 vim을 종료한 경우에는 pid 번호 뒤에 'still running' 메시지가 보이지 않게 된다. 또한 하단에 실행 가능한 명령에 D(delete)가 나타나게 된다.

따라서 이런 경우에는 복구 모드로 파일을 열면 스왑 파일에 저장된 파일 내용을 불러오게 된다. 그러면 사용자는 이전 원본 파일과 복구된 내용을 비교해서 저장 여부를 결정하면 된다.

복구 후에도 원본 스왑 파일은 삭제되지 않으므로 에러 화면이 계속 나타날 수 있다. 그러므로 복구를 해서 스왑 파일이 필요 없는 경우라면 안내 화면에서 d를 눌러 스왑 파일을 삭제해주도록 한다.


※ Q나 A는 아무런 작업을 하지 않고 vim을 종료하는 기능인데 A의 경우는 디버깅용 덤프 파일을 생성하는 점이 다르다.


'Vim > Tutorial' 카테고리의 다른 글

파일 관련 기능  (0) 2013.02.04
문자, 문자열 검색/치환  (0) 2013.02.02
명령어 표기법에 대해서  (0) 2013.02.02
Vim Key mapping  (0) 2013.01.16
유용한 명령어들 몇가지  (0) 2013.01.15
Posted by scii
: