스왑 파일의 목적은 무엇입니까?


73

파일을 편집 할 때 Vim은라는 파일을 생성하는 경향이 있습니다 . 에서 옵션이 스왑 파일 생성을 억제 한다는 것을 알았습니다 ..filename.swpvim -h-n

스왑 파일을 기본적으로 비활성화하는 데 사용할 수있는 vimrc 지시문이 있습니까?

스왑 파일의 목적은 무엇이며, 파일을 억제하여 누락 된 기능은 무엇입니까?


FWIW, 스왑 파일도 성가신 것으로 나타 났으며 잠시 동안 noswapfile아래 제안대로 사용하려고 시도했습니다 . 그러나 결국 이점은 성가신 것보다 중요하기 때문에 결국 포기하고 꺼버렸습니다.하지만 실제로는 스왑 파일 사용을 복원하도록 확신시킨 것이 무엇인지 기억하지 못합니다. 컴퓨터가 고장 나서 내가 잃어버린 일부 파일을 복원 할 수 없었습니다. 스왑 파일을 켜면 사소한 것일 수 있습니다.
Kyle Strand

답변:


89

스왑 파일의 이유

스왑 파일은 버퍼에 대한 변경 사항을 저장합니다. Vim 또는 컴퓨터가 충돌하면 해당 변경 사항을 복구 할 수 있습니다.

스왑 파일은 Vim의 여러 인스턴스가 동일한 파일을 편집하지 못하게하는 방법을 제공합니다. 이것은 다중 사용자 시스템에서 또는 다른 Vim이 이미 파일을 편집하고 있는지 아는 경우에 유용 할 수 있습니다.

스왑 파일 비활성화

당신이 (필자는 추천하지 것이다) 완전히 스왑 파일을 생성하지 않으려면, 당신은 추가 할 수 있습니다 set noswapfile당신에게 .vimrc. 옵션의 전역 값을 설정합니다. 그런 다음 :setlocal swapfileVim을 실행 하는 동안 사용하여 특정 버퍼에 대해이를 무시할 수 있습니다 .

스왑 파일 구성

파일 시스템 주위에 추가 파일이 분산되어있는 경우 문제가 발생하면 모든 스왑 파일을 한 곳에 모을 수 있습니다. 예를 들어, ~/.vim/tmp디렉토리를 작성하고 추가하십시오.

set directory^=$HOME/.vim/tmp//

당신에게 .vimrc. 이 'directory'옵션에는 Vim이 스왑 파일을 시도하고 저장하는 데 사용할 디렉토리 목록이 포함되어 있습니다.

^=구문 :set앞에 추가합니다 목록의 머리에 디렉토리 이름을, 그래서 빔은 먼저 디렉토리를 확인합니다.

//디렉토리 이름 끝에 다른 디렉토리에서 같은 이름의 파일 사이의 충돌이되지 않도록 스왑 파일을 생성하는 파일에 대한 절대 경로를 사용하는 빔을 알려줍니다.

이렇게하면 여러 명의 사용자가 동일한 파일을 편집하려고 할 때 Vim이이를 알 수 없습니다. 스왑 파일은 원본 파일과 동일한 디렉토리에 있지 않기 때문에 다른 사용자의 Vim은 스왑 파일에 대해 알지 못하고 스왑 파일에 대해 이미 편집 중임을 경고하지 않습니다.


4
영구 실행 취소에 비해 스왑 파일이 한동안 vim 상태 였으므로 어떤 이점이 있습니까?
alpha_989

사용 vim-auto-save합니다. 스왑 파일이 더 이상 사용되지 않습니까?
Kevin

@Kevin 그것은 달려있다. 플러그인이 Vim이 스왑 파일을 작성하는 모든 시나리오에서 저장을 유발하는 경우 아마도 가능합니다. 그렇지 않으면 버퍼가 저장되지 않고 스왑 파일이 도움이 될 수있는 기간이 남아 있습니다.
jamessan

@ alpha_989 그들은 보완 적입니다. 스왑 파일을 사용하면 저장하지 않은 변경 사항을 복구 할 수 있습니다. 영구 실행 취소 파일을 사용하면 Vim 세션에서 실행 취소 기록을 탐색 할 수 있지만 파일은 저장할 때만 작성됩니다.
jamessan

vim을 설정하는 방법은 하나의 인스턴스에만 스왑이 없습니까? 예를 들어 vim temp.txt --some-command-that-disable-swap? 내 유스 케이스는 일부 감시자가 디렉토리의 변경 사항을 계속 감시하므로 충돌을 방지하기 위해 스왑을 비활성화하고 싶습니다.
Ng Sek Long
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.