'vi'에 해당되는 글 2건

  1. 2013.02.02 vim 에러 처리
  2. 2013.01.15 유용한 명령어들 몇가지

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
:

폴딩하기

: 코드해석이나 코드작성할 때 참고하지 않아도 되는 함수나 블록들을 폴딩화 시키면 좀 더 깔끔하게 작업을 할 수 있다.

zf    :    폴딩을 한다.

zo    :    폴딩을 연다.

zc    :    폴딩을 닫는다.

블록 지정한 후 zf 를 하면 폴딩이 된다.

폴딩을 여는 것은 zo, 닫는 것은 zc 이다.




위치 마킹하기

: 자주가는 함수부분이나 특정한 곳을 임의로 마킹할 수 있다. 그러면 작업 속도가 좀 더 빨라질 것이다.

m[임의의 알파벳]    :    마킹

`[마킹한 알파벳]    :    마킹된 위치로 돌아갈 때 (` 기호는 backtick을 의미)


마킹의 세가지 종류

1. A-Z    :    전역 마킹 - 현재 파일을 포함한 다른 파일 간의 마킹이 가능하다. (다른 파일간에도 이동)

2. a-z    :    지역 마킹 - 현재 파일 내에서만 마킹이 가능하다. (현재 파일에서만 이동)

3. ~/.viminfo 파일에서 자동으로 지정한 0-9


:marks    :    마킹한 모든 정보를 보여준다. 




편집중에 명령어의 결과값을 편집기에 삽입하기

파일을 합칠때 혹은 명령을 내린 후 콘솔화면에 출력되는 결과가 필요할 수도 있다. 그럴 때 쓰면 유용하겠다.

:r ![명령]    :    명령이 수행된 결과가 현재 커서의 위치에 끼워 넣어진다.

ex) :r !file1.c    :    현재 커서의 위치에 file1.c 내용이 끼워 넣어진다.




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

vim 에러 처리  (0) 2013.02.02
명령어 표기법에 대해서  (0) 2013.02.02
Vim Key mapping  (0) 2013.01.16
vim Tutorial (PDF파일)  (0) 2012.05.09
vi editor  (0) 2012.05.02
Posted by scii
: