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


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.