vim에서 스왑 파일 생성 비활성화


216

.swpvim에서 파일 생성 을 비활성화하는 방법이 있습니까? 또는 적어도 한 곳에서 모두 생성하여 쉽게 찾아 삭제할 수 있습니다.

편집하는 동안 부모 디렉토리를 복사 할 때 특히 성가신 것을 발견했습니다. 물론 find -exec를 사용하여 파일을 찾고 삭제할 수 있음을 알고 있습니다. 그러나 더 실용적인 해결책을 원합니다.


1
stackoverflow.com/questions/607435/… 도움이 될 수 있습니다
Ross

답변:


255

vim 내에서 스왑 파일을 비활성화하려면 다음을 입력하십시오.

:set noswapfile

스왑 파일을 영구적으로 비활성화하려면 파일에 아래를 추가 ~/.vimrc하십시오.

set noswapfile

자세한 내용은 swapfileVim 문서를 참조하십시오.


6
스왑 파일은 편집기가 중단되는 경우 (정전 등) 좋은 점에 유의하십시오.
koonse

1
또 다른 옵션은 여전히 ​​스왑 파일을 사용하지만 메모리에 남겨 두므로 하드 디스크를 계속 쓰지 않습니다. 이렇게하면 정전 중에 파일이 손실되는 것을 막을 수는 없지만 다른 파일을 동일한 vim에서 열면 즉시 알려줍니다. 명령은 다음과 같습니다. set directory = / dev / shm
webbertiger

trusktr의 답변을 통해 OP의 우려를 해결하면서 스왑 파일의 장점을 유지할 수 있습니다.
jpaugh

vim 내부에서 파일을 여는 동안 스왑 파일을 비활성화 할 수도 있습니다.:noswapfile edit /path/to/file
Torkel Bjørnson-Langen

데이터 손실에 대한 내 개인적인 철학은 ... DBAB하고 수시로 저장
새미 Bencherif

156

.vimrc 또는 / etc / vimrc에 다음 변수를 설정하여 vim이 편집중인 파일의 작업 디렉토리 대신 특수 위치에 스왑, 백업 및 실행 취소 파일을 넣도록하십시오.

set backupdir=~/.vim/backup//
set directory=~/.vim/swap//
set undodir=~/.vim/undo//

경로에 이중 후행 슬래시를 사용하면 vim은 이름 충돌을 피할 수있는 기능을 활성화합니다. 예를 들어, 한 위치에서 파일을 편집하고 다른 위치에서 다른 파일을 편집하고 두 파일의 이름이 동일한 경우 ~ / .vim / swap /에서 이름 충돌이 발생하지 않도록합니다. ~ / .vim / swap //을 두 개의 슬래시와 함께 지정하면 vim은 충돌을 피하기 위해 편집중인 파일의 전체 경로를 사용하여 스왑 파일을 만듭니다 (파일 경로의 슬래시는 백분율 기호 %로 대체 됨).

예를 들어 /path/one/foobar.txt 및 /path/two/foobar.txt를 편집하면 ~ / .vim / swap /에 % path % one % foobar.txt라는 두 개의 스왑 파일이 표시됩니다. 및 % path % two % foobar.txt.


또한 저장된 백업 파일이 devs 스킨을 저장하는 시간을 추가 할 수도 있습니다.
Bartek Skwira

논평 : (비평이 아님), 그것은 많은 사람들에게 vim 사용의 큰 부분 인 파일과 작은 편집 또는 중요하지 않은 메모 유지를 위해 개발에 주로 사용되는 것 같습니다. 개인적으로 모든 작업에 스왑이나 다른 자동 백업이없는 것을 선호합니다. 실제로 무언가를 개발해야하는 경우 코드 버전 제어 등을 통해 나를 보호하기위한보다 높은 수준의 프레임 워크가 필요합니다.
j riv

@LelaDax 사실, 모든 소스 코드에 git을 사용하기 때문에 대부분의 경우이 파일은 쓸모가 없습니다. 드물기는하지만 (충돌과 같은) 유용합니다. 그러나 실제로, 실행 취소 기록은 많이 사용합니다. 이전 기록을보기 위해 git commit을 체크 아웃하는 것보다 빠르게 탐색하는 것이 훨씬 쉽습니다. Gundo를 사용하면 실행 취소 트리를 탐색하기 쉽고 편리합니다. 그래도 스왑 및 백업 파일 없이도 살 수있었습니다.
trusktr 2016 년

26
FyI는 새로운 사람들 (나 같은 하하 ...)을 위해 ~ / .vim /로 가서 디렉토리를 직접 만들어야합니다. 자동으로 생성되지는 않습니다.
8월

1
vimrc에 코드를 작성하여 폴더를 자동으로 만들 수도 있습니다. 이것은 내가 한 것입니다. 따라서 새로운 시스템에서는 vimrc를 가져와 나머지를 처리합니다.
trusktr

42

나는 여기서 답을 찾았습니다 .

vim -n <file>

스왑 파일없이 파일을 엽니 다.

게다가:

set dir=/tmp

in .vimrc은에서 스왑 파일 을 만듭니다 /tmp.


무엇에 대한 *.ext~백업 파일? 비활성화 할 명령 줄 옵션이 있습니까?
Salman von Abbas

그것은 일회성 거대한 파일에 매우 유용합니다! 감사.
Felipe Alvarez

28

여기 내 개인 ~ / .vimrc 백업 설정이 있습니다

" backup to ~/.tmp 
set backup 
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set backupskip=/tmp/*,/private/tmp/* 
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set writebackup

13

나는 다른 텍스트 편집기가 귀찮게하지 않을 때 왜 vim 이이 모든 '재해 복구'도구를 필요로하는지 질문하는 사람들에 동의합니다. vim이 편집 할 때 편집 된 파일의 디렉토리에 추가 파일을 만드는 것을 원하지 않습니다. 대단히 감사합니다. 이를 위해 _vimrc스왑 파일을 비활성화하고 자극적 인 '백업'파일을 Temp 디렉토리로 옮깁니다.

" Uncomment below to prevent 'tilde backup files' (eg. myfile.txt~) from being created
"set nobackup

" Uncomment below to cause 'tilde backup files' to be created in a different dir so as not to clutter up the current file's directory (probably a better idea than disabling them altogether)
set backupdir=C:\Windows\Temp

" Uncomment below to disable 'swap files' (eg. .myfile.txt.swp) from being created
set noswapfile

9
나는 다른 편집자들이 그것을 귀찮게하지 않는다는 사실이 vi (m)에 잘 반영되지 않는 것보다 다른 편집자들에게 잘 반영되지 않는다고 생각합니다. 동일한 디렉토리를 이러한 파일을 넣을 기본 위치로 설정하는 것은 유감 스럽지만 적어도 조금 방어 적입니다. (예를 들어, 다중 서버, 고도로 크로스 마운트 된 환경에서는 가장 긴급한 시점에 복구 파일을 찾을 수있는 위치가 분명하지 않을 수 있습니다)
Domingo Ignacio

3
Vim의 스왑 파일 처리는 끔찍합니다. 잃어버린 데이터를 5 회 정도 복구하는 데 사용했습니다. 그러나 스왑 파일을 약 9,000 번 복구하는 것이 번거 롭습니다. 복구 프로세스가 심하게 빨리 지 않으면 좋은 기능 일 수 있습니다. recover.vim이 약간 도움이되지만 여전히 대화식입니다.
joeytwiddle

3
숭고한 텍스트가 disaster recovery있습니다. 나는 그것을 좋아한다! 파일을 저장할 필요조차 없습니다. 변경 한 내용을 다시 시작하면 저장 여부에 관계없이 풀업됩니다.
leetNightshade

스왑 파일과 백업을 모두 쓸모 없게 만드는 모든 변경 사항을 작성하는 간단한 자동 명령이 있습니다.
tbodt

2
@ TorkelBjørnson-Langen 아마도 모든 Vim 세션을 닫지 않고 내 컴퓨터를 재부팅 한 다음 실제로 어떤 복구 파일이 유효한지 편집증이 된 것은 내 잘못 일 것입니다. 어쨌든 나는 저장되지 않은 편집이있을 때 스왑 파일을 유지하는 플러그인을 작성하여 두 세계를 최대한 활용하려고했습니다. vim-swap-is-awesome.vim
joeytwiddle

7

스왑 파일을 완전히 비활성화하기 위해 backupdir 및 directory를 null로 설정할 수 있지만 일반적으로 중앙 집중식 디렉토리에 두는 것이 좋습니다. Vim은 이름 충돌이나 그와 유사한 것이 없는지 확인합니다. 따라서 이것은 완전히 안전한 대안입니다.

set backupdir=~/.vim/backup/
set directory=~/.vim/backup/

3
//동일한 이름으로 두 파일을 동시에 수정할 수 있도록 경로 끝에 이중 슬래시 를 추가해야합니다 .
Samuel O'Malley

감사합니다, @ SamuelO'Malley. // 무엇을합니까?
monokrome

이에 :help directory대한 문서를 읽으려면 살펴보십시오 . 이중 슬래시는 vim에게 파일의 전체 경로를 스왑 파일 이름으로 인코딩하도록 지시합니다 (예 : %home%sam%dotfiles%.gitignore.swpjust가 아닌) .gitignore.swp.
Samuel O'Malley


3

당신이 사용하는 경우 git, 당신은 추가 할 수 있습니다 *.swp.gitignore.


그것이 대부분의 사용자에게 필요한 것이라고 생각합니다! 스왑 파일을 끄는 것은 나쁜 습관입니다.
DenisKolodin

2

특정 파일에 대해서만 vim 스왑 파일을 만들지 마십시오

autocmd bufenter  c:/aaa/Dropbox/TapNote/Todo.txt :set noswapfile

1
또는 특정 디렉토리의 모든 파일에 대해 다음이 작동하는 것 같습니다 (간단한 테스트 만).autocmd bufenter c:/aaa/Dropbox/TapNote/* :set noswapfile
scottkosty

1

Rails 프로젝트에이를 설정하려는 사람은 누구나 추가하십시오.

set directory=tmp,/tmp

당신의

~/.vimrc

따라서 .swp 파일은 원래 위치 인 tmp 디렉토리 (프로젝트 당)에 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.