USR_11

*usr_11.txt*	Vim version 7.4 대상.  새로 고침: 2010년 7월 20일

		      VIM 사용설명서 - Bram Moolenaar 저
				       정지용 역

				작업 복구하기


컴퓨터가 뻗었습니까?  벌써 몇 시간이나 작업하고 있었는데?  당황하지 마세요!
Vim은 작업 내용 대부분을 되살리기에 충분한 정보를 저장해 놓았을 겁니다.  이번
장에서는 작업 내용을 어떻게 복구하고, 스왑 파일이 어떻게 사용되는지를
살펴봅니다.

|11.1|	기초적인 복구
|11.2|	스왑 파일은 어디에?
|11.3|	죽은 건가요?
|11.4|	더 살펴보기

다음 장: |usr_12|  멋진 기술들
이전 장: |usr_10|  많이 고치기
   차례: |usr_toc|


*11.1*	기초적인 복구

대부분의 경우, 어느 파일을 편집하고 있었는지 알고 있다면(그리고 하드디스크에
문제가 없다면) 파일을 복구하는 것은 매우 간단합니다.  Vim을 해당 파일명에 "-r"
인자를 붙여서 시작하세요:

	vim -r help.txt

Vim은 스왑 파일(편집중인 내용을 저장하는데 사용하는 파일)을 읽을 것입니다.
경우에 따라 원본 파일을 부분 부분 읽을 수도 있습니다.  Vim이 변경한 내용을
복구했다면 다음 메시지가 나올 겁니다 (물론 파일명은 다르겠지요):

	스왑 파일 ".help.txt.swp"을(를) 사용합니다 
	원래 파일 "~/vim/runtime/doc/help.txt" 
	복구가 끝났습니다. 모든 게 정상인지 확인해 보셔야만 합니다. 
	(어쩌면 다른 이름으로 저장하고 싶으실지도 모르겠습니다 
	그리고 바뀐 내용을 확인하려면 원래 파일에 대해 diff를 실행하세요) 
	이제 .swp 파일을 지우셔도 됩니다. 

안전하게 하려면, 이 파일을 다른 이름으로 저장합시다:

	:write help.txt.recovered

원하던 대로 복구했는지 원래 파일과 비교하여 확인해봅시다.  이런 작업에는
Vimdiff가 매우 유용합니다 |08.7|.  예를 들어:

	:write help.txt.recovered
	:edit #
	:diffsp help.txt

원본 파일에 더 최신 내용이 있을 수도 있으니 주의하세요 (컴퓨터가 죽기 직전에
파일을 저장한 경우).  그리고 빠진 내용이 없는지도 확인해보세요 (Vim이 복구할
수 없도록 꼬인 경우).
   복구 중에 Vim이 경고 메시지를 보여주면, 주의 깊게 읽으세요.  좀처럼 그럴
일은 없겠지만요.

만약 복구한 결과가 파일의 내용과 정확히 일치한다면, 다음과 같은 메시지가
나옵니다:

	스왑 파일 ".help.txt.swp"을(를) 사용합니다 
	원래 파일 "~/vim/runtime/doc/help.txt" 
	복구가 끝났습니다. 버퍼의 내용이 파일 내용과 같습니다. 
	이제 .swp 파일을 지우셔도 됩니다. 

이런 일은 보통 이미 변경한 내용을 복구했거나 변경한 후에 저장을 했었을 경우에
발생합니다.  이런 때는 스왑 파일을 지우셔도 안전합니다.

마지막 몇 가지 변경사항은 복구가 안 되는 것이 보통입니다.  Vim은 약 4초 간
입력이 없거나, 200타 정도를 입력했을 때 변경사항을 디스크에 씁니다.  이
값들은 'updatetime'과 'updatecount' 옵션으로 설정할 수 있습니다.  즉,
시스템이 죽었을 때 Vim이 저장할 기회가 없었다면, 마지막으로 쓴 후의
변경사항은 유실되는 것입니다.

만약 파일명 없이 편집하고 있었다면, 빈 문자열을 인자로 주면 됩니다:

	vim -r ""

작업 중이던 정확한 디렉터리에 있어야 합니다.  그렇지 않으면 스왑 파일을 찾지
못할 겁니다.


*11.2*	스왑 파일은 어디에?

Vim은 스왑 파일을 몇 곳에 저장할 수 있습니다.  일반적으로는 원본 파일과 동일한
디렉터리입니다.  스왑 파일을 찾아보려면, 파일이 있는 디렉터리로 이동한 후 다음
명령을 사용하세요:

	vim -r

Vim이 찾을 수 있는 스왑 파일 목록을 보여줄 겁니다.  또한 현재 디렉터리에 있는
파일의 스왑 파일이 있을 수 있는 디렉터리들도 찾아서 보여줍니다.  하지만 그 외
다른 디렉터리의 스왑 파일을 찾지는 않습니다.  디렉터리 트리를 따라서 찾지도
않고요.
   출력 결과는 다음과 같은 형태입니다:

	스왑 파일을 찾았음: 
	   현재 디렉토리에: 
	1.    .main.c.swp 
		  소유자: mool   날짜: Tue May 29 21:00:25 2001 
		 파일 이름: ~mool/vim/vim6/src/main.c 
		  수정: YES 
		 사용자 이름: mool   호스트 이름: masaka.moolenaar.net 
		프로세스 ID: 12525 
	   In directory ~/tmp: 
	      -- 없음 -- 
	   In directory /var/tmp: 
	      -- 없음 -- 
	   In directory /tmp: 
	      -- 없음 -- 

만약 당신에게 필요할 듯 한 스왑 파일이 여러 개인 경우에는, 스왑 파일 여러
개가 주어지고, 그 중 사용할 것 하나의 번호를 입력하도록 요청할 것입니다.
어느 것을 사용할지 날짜를 주의깊게 확인한 후 선택하세요.
   어느 것을 사용해야 할지 모르겠다면, 그냥 하나씩 일일이 결과를 확인해가며
고르세요.


특정 스왑 파일을 사용하기
-------------------------

어떤 스왑 파일을 사용해야 할지 이미 알고 있다면, 스왑 파일 이름을 지정해서
복구할 수 있습니다.  그러면 원래 파일의 이름은 Vim이 스왑 파일로부터 알아서
찾을 겁니다.

예:
	vim -r .help.txt.swo

이 기능은 스왑 파일이 예상한 디렉터리가 아닌 곳에 있을 때도 유용합니다.
Vim은 *.s[uvw][a-z] 패턴의 파일 이름을 스왑 파일로 인식합니다.

이걸로 잘 동작하지 않는다면, Vim이 어떤 파일 이름을 알려주는지 확인하고, 이에
따라 파일명을 바꾸세요.  Vim이 스왑 파일을 어디에 저장하는지 'directory'
옵션을 확인해보세요.

	Note:
	Vim은 'dir' 옵션의 디렉터리들에 "filename.sw?" 패턴에 일치하는 파일이
	있는지 여부로 스왑 파일을 찾습니다.  만약 와일드카드 확장이 동작하지
	않는다면 (예를 들어 'shell' 옵션이 잘못되거나 해서), Vim은 어쩔 수
	없이 "filename.swp" 파일을 찾아봅니다.  이것도 실패한다면, 파일을
	복구하기 위해서는 스왑 파일의 이름을 지정해줘야 합니다.


*11.3*	죽은 건가요?					*ATTENTION* *E325*

Vim은 당신이 어리석은 짓을 하는 것을 막기 위해 노력합니다.  당신이 아무 생각
없이 파일을 편집하기 시작했다고 해봅시다.  당연히 파일 내용이 나오리라
생각하면서요.  하지만 Vim이 그 대신 다음과 같은 긴 메시지를 보여줍니다:

		E325: 주목 
	Found a swap file by the name ".main.c.swp" 
		  소유자: mool   날짜: Tue May 29 21:09:28 2001 
		 파일 이름: ~mool/vim/vim6/src/main.c 
		  수정: 아니오 
		 사용자 이름: mool   호스트 이름: masaka.moolenaar.net 
		프로세스 ID: 12559 (아직 실행중) 
	While opening file "main.c" 
		     날짜: Tue May 29 19:46:12 2001 
 
	(1) Another program may be editing the same file. 
	    If this is the case, be careful not to end up with two 
	    different instances of the same file when making changes. 
	    Quit, or continue with caution. 
 
	(2) An edit session for this file crashed. 
	    만약 그렇다면 ":recover" 혹은 "vim -r main.c" 
	    을 사용하여 복구하십시오 (":help recovery" 참고). 
	    이미 복구하셨었다면 스왑 파일 ".main.c.swp" 
	    을(를) 지우셔야 이 메시지가 사라집니다. 

이 메시지가 나오는 이유는 Vim이 파일 편집을 시작할 때 이미 이 파일의
스왑 파일이 있는지 확인하기 때문입니다.  만약 이미 스왑 파일이 있다면, 무언가
잘못된 것이지요.  이때는 다음 두 가지 상황 중 하나일 것입니다.

1. 이 파일을 현재 다른 곳에서 편집 중입니다.  "프로세스 ID"가 있는 줄의
   메시지를 보세요.  다음과 같을 겁니다:

		프로세스 ID: 12559 (아직 실행중) 

   "(아직 실행중)"이란 말은 이 파일을 편집하는 프로세스가 이 컴퓨터에서
   실행중이라는 뜻입니다.  유닉스 시스템이 아니라면 이런 추가 정보는 없을
   겁니다.  파일을 네트워크를 통해 편집 중이어도 이런 정보는 없을 겁니다.
   해당 프로세스는 다른 컴퓨터에서 실행중일 테니까요.  이 두 가지 경우에는
   상황을 알아서 잘 확인해야 합니다.
      만약 같은 파일을 다른 Vim에서 편집 중이라면, 계속 편집하는 경우 같은
   파일의 두 가지 버전이 생기겠지요.  마지막에 저장한 버전이 다른 버전을
   덮어쓰게 될 테고, 결국 변경한 내용이 사라지게 될 겁니다.  그러니 현재
   Vim을 그냥 나가는 편이 좋습니다.

2. 이전에 Vim이 죽거나 컴퓨터가 죽으면서 생긴 스왑 파일일 수도 있습니다.
메시지에 나온 날짜를 확인해보세요.  만약 편집 중인 파일보다 스왑 파일의 날짜가
더 나중이고, 다음과 같은 내용이 있다면:

		수정: 예 

   이때는 죽은 편집 내용이 있을 가능성이 높으므로 복구하는 것이 좋습니다.
      만약 파일의 날짜가 스왑 파일의 날짜보다 나중이라면, 죽은 후에 다른 변경
   사항이 있거나 (아마도 이미 전에 복구를 했지만 스왑 파일을 지우지 않은
   경우?), 아니면 죽기 직전이지만 스왑 파일을 마지막으로 저장한 것 보다는 이
   후에 파일을 저장한 경우(운 좋은 경우이지요.  옛날 스왑 파일도 필요하지
   않으니까요) 둘 중 하나일 것입니다.  Vim은 이 경우 다음과 같이 경고를
   합니다:

      NEWER than swap file! 


스왑 파일을 읽을 수 없음
------------------------

가끔은 다음과 같은 내용이

	[읽을 수 없음] 

스왑 파일 이름 아래에 나올 수 있습니다.  이건 상황에 따라 좋을 수도, 나쁠 수도
있습니다.

만약 이전 편집 상황에서 파일을 전혀 고치지 않고 죽었다면, 좋은 상황입니다.  이
때는 스왑 파일이 있는 디렉터리 내용을 보면 파일 크기가 0인 것을 볼 수
있습니다.  그냥 스왑 파일을 지우고 작업을 계속 하면 됩니다.

스왑 파일의 읽기 권한이 없는 경우라면 약간 나쁜 것입니다.  이때는 파일을 읽기
전용으로 보거나, 나가야 합니다.  다중 사용자 환경에서 당신이 다른 사용자로
수정을 한 경우라면, 로그아웃하고 해당 사용자 이름으로 다시 로그인해서 "읽기
오류"를 고칠 수 있습니다.  아니면 누가 마지막으로 수정했는지(아니면 수정
중인지) 확인해보고 그 사람과 얘기해 봐야할 수도 있습니다.

만약 스왑 파일을 담고 있는 디스크의 물리적인 읽기 오류라면 매우 안 좋은
것입니다.  다행히, 이런 일은 잘 일어나지 않습니다.  (가능하다면) 일단 파일을
읽기 전용으로 보고, 사라진 변경 사항을 확인해 볼 수 있을 겁니다.  당신이
책임져야할 상황이라면, 변경한 내용을 다시 작업할 준비를 해야 할 겁니다.


어떻게 해야 할까요?					*swap-exists-choices*
------------------

만약 선택을 입력할 수 있는 환경이라면, 다음 다섯 가지 중 하나를 선택하라고 할
것입니다:

  스왑 파일 ".main.c.swp"이 이미 존재합니다! 
  읽기 전용으로 열기([O]), 그냥 고치기((E)), 복구((R)), 삭제((D)), 
  끝내기((Q)), 버리기((A)): 

O  파일을 읽기 전용으로 엽니다.  파일을 보기만 하면 되고, 복구할 필요가
   없다면 이걸 선택하세요.  다른 곳에서 이 파일을 편집하고 있다는 것을 알고
   있지만, 그냥 살펴보기만 하고 바꾸지는 않을 생각일 때 이걸 선택하면 됩니다.

E  파일을 그냥 고칩니다.  주의해서 사용하세요!  만약 파일을 다른 Vim에서
   고치고 있다면, 결과적으로 두 개의 버전이 생길 겁니다.  이런 경우 Vim이
   경고를 해주기는 하겠지만, 이왕이면 안전하게 작업하는 것이 좋겠지요.

R  파일을 스왑 파일로부터 복구합니다.  스왑 파일에 복구하고 싶은 변경사항이
   있다면 이걸 선택하세요.

Q  끝냅니다.  파일 편집을 시작하지 않습니다.  다른 Vim에서 같은 파일을
   편집하고 있다면 이걸 선택하세요.
      만약 방금 Vim을 시작한 거라면, Vim이 그대로 종료될 겁니다.  만약 Vim을
   여러 파일을 열면서 시작했다면, Vim은 첫 번째 파일의 스왑 파일이 있는
   경우에만 종료됩니다.  edit 명령을 사용했다면, 파일은 로드되지 않고 원래
   편집하던 파일로 돌아갑니다.

A  중단합니다.  끝내기(Q)와 비슷하지만, 이후의 모든 명령도 중단합니다.  여러
   창이 있는 세션을 열 때처럼, 여러 파일을 여는 스크립트를 불러올 때
   유용합니다.

D  스왑 파일을 지웁니다.  더 이상 필요 없다는 것이 확실할 때 사용하세요.
   예를 들어, 변경한 내용이 없거나, 스왑 파일보다 편집하는 파일이 더
   최신판일 때 같은 경우예요.
      유닉스에서는 스왑 파일을 만든 프로세스가 더 이상 동작 중이 아닐 때에만
   이 선택지가 나타납니다.

선택을 할 수 없는 상황이라면 (이럴 지원하지 않는 Vim 버전을 실행중이라면),
직접 명령을 입력해야 합니다.  파일을 복구하려면, 다음 명령을 사용하세요:

	:recover


Vim이 파일의 스왑 파일을 언제나 인식해내지는 못합니다.  지난 번 편집할 때는
스왑 파일을 다른 디렉터리에 저장했을 수도 있고, 아니면 편집하는 컴퓨터가
바뀌면서 파일의 경로가 바뀌는 경우에 그럴 수 있습니다.  그러니까, 언제나 Vim이
알아서 경고해줄 거라고 너무 의존하지는 마세요.

이 메시지를 정말 보기 싫다면, 'shortmess' 옵션에 'A' 플래그를 추가하면 됩니다.
하지만 이 옵션을 쓸 일은 거의 없을 겁니다.

암호화와 스왑 파일에 대해서는 다음을 참고하세요:|:recover-crypt|.


*11.4*	더 살펴보기

|swap-file|	스왑 파일이 어디에 생기고, 파일명은 무엇이 되는지에 대한 설명.
|:preserve|	수동으로 스왑 파일을 디스크에 쓰기.
|:swapname|	현재 파일의 스왑 파일 이름을 보기.
'updatecount'	스왑 파일을 디스크에 쓸 때 까지 필요한 키 입력의 수.
'updatetime'	해당 시간 동안 키 입력이 없으면 스왑 파일을 디스크에 씀.
'swapsync'	스왑 파일을 저장할 때 실제로 물리 디스크에 동기화할 지 여부.
'directory'	스왑 파일을 저장할 디렉터리 이름 목록.
'maxmem'	내용을 스왑 파일에 쓰기 전 메모리 사용량 한계.
'maxmemtot'	동일하지만 모든 파일을 합친 총계.


다음 장: |usr_12|  멋진 기술들

저작권: |manual-copyright| 참고  vim:tw=78:ts=8:ft=help:norl:

Generated by vim2html on 2013. 12. 14. (토) 20:47:01 KST