Vim이 ~ 확장자를 가진 파일을 저장하는 이유는 무엇입니까?


180

Windows에서 Vim을 사용하는 동안 Vim은 파일, .ext.swpVim 창을 닫을 때 삭제 된 파일 및 파일을 저장한다는 것을 알았습니다 .ext~.

.ext.swpVim이 충돌하는 경우 파일이 세션 백업 이라고 가정합니다 . .ext~그러나 파일 의 목적은 무엇입니까 ? 이 파일은 영구 백업 파일입니까? 작업중 인 모든 파일을 이러한 복제본없이 호스트에 복사하고 싶기 때문에 성가신 일입니다. 이 기능을 끄거나 타당한 이유가 있다면 파일을 숨기려면 어떻게해야합니까?


파일을 둘 이상의 위치에서 동시에 열면 파일이 만들어 .ext.swp집니다.
dirkgently

2
dirkgently : 아니요, 여기에서 유일한 vim 창에서 파일을 열 수 있으며 .swp 파일이 생성됩니다. 창을 저장하거나 닫을 때 제거되므로 제거되지 않습니다.
Ross

답변:


221

*.ext~파일은 당신이 그것을 편집하기 전의 파일을 포함하는 백업 파일입니다.

*.ext.swp파일은 스왑 파일이며 잠금 파일 역할을하며 실행 취소 / 다시 실행 기록과 Vim에 필요한 다른 내부 정보를 포함합니다. 충돌이 발생하면 파일을 다시 열 수 있으며 Vim은 스왑 파일에서 이전 상태를 복원합니다 (유용한 것으로서 스위치를 끄지 않습니다).

백업 파일 자동 작성을 끄려면 (vimrc에서) 다음을 사용하십시오.

set nobackup
set nowritebackup

어디 nowritebackup입니다 빔의 행동을 "저장"기본값을 변경 :

  1. 새 파일에 버퍼 쓰기
  2. 원본 파일을 삭제
  3. 새 파일의 이름을 바꾸십시오

그리고 Vim이 버퍼를 원본 파일에 쓰도록합니다 (I / O 오류가 발생하면 파일이 손상 될 위험이 있습니다). 그러나 Windows 바탕 화면에서 "파일을 점프"하는 것을 방지합니다. 이것이 바로 제 nowritebackup위치입니다.


7
하나를 들어 you prevent "jumping files" on the Windows desktop. Google에서이 답변을 찾았습니다
Merlyn Morgan-Graham

1
실제로- nobackup와 둘 다 있어야 nowritebackup합니까? 파일의 사본을 백업으로 작성하는 방법이 있습니까? 그러나이 쓰기 / 삭제 / 이름 바꾸기 작업은 수행하지 않습니까?
Merlyn Morgan-Graham

@Merlyn : backup(이 아닌 nobackup) Vim은 백업 ( *.ext~파일)을 생성합니다 . 이것은와 완전히 관련이 없습니다 nowritebackup.
Tomalak

6
이러한 스위치 조합간에 서로 다른 동작을 설명하는 표가 있습니다 help backup-table. 설정도 nobackup아니고 nowritebackup, 대신 설정 backupcopy=yes하면 "점프"문제도 해결됩니다. 그러나 이것은 그들 자신에게 perf를 해칠 수 있습니다
Merlyn Morgan-Graham

27
끄지 set backupdir=~/.vim/backup
않고

224

더 나은 해결책은 vimrc 파일 에이 줄을 배치하는 것입니다.

set backupdir=~/vimtmp//,.
set directory=~/vimtmp//,.

첫 번째 줄은 백업 파일을위한 것이고 두 번째 줄은 스왑 파일을위한 것입니다. 끝에 이중 슬래시는 같은 이름을 가진 두 파일의 경우 충돌이 없도록합니다. 주석을 참조하십시오 (이 편집 시점에서이 옵션은 아직 백업 파일 이 아니라 스왑 파일에만 적용됨 ). 는 ,.허용 vim전자가 존재하지 않는 경우 현재 디렉토리를 사용합니다.

이 작업을 수행하려면 홈 디렉토리에 vimtmp라는 디렉토리를 작성해야합니다. 또한 구성에서 백업이 활성화되어 있는지 확인하십시오 ( set backup없는 경우 추가 ).

이렇게하면 두 세계의 이점을 모두 누릴 수 있지만 파일을 볼 필요는 없지만 문제가 발생하면 vimtmp에서 백업 파일을 가져올 수 있습니다. 가끔씩 디렉토리를 정리하는 것을 잊지 마십시오.


22
+1 실제로 ~ / .vim / tmp로 설정했지만 둘 중 한 번 이상 내 엉덩이를 구했습니다.
JC Yamokoski 2016

11
왜 필요한가요? 각 줄의 끝에?
shin

9
~ / vimtmp는 현재 작업 디렉토리를 사용합니다 존재하지 않는 경우 @shin 빔은이 경우, 사용 가능한 첫 번째 디렉토리를 사용합니다
xixixao

3
@SalmanPK 이상적인 세상에서는 공개적으로 액세스 가능한 서버에서 직접 구성 파일을 편집해서는 안됩니다
Score_Under

12
경로 끝에 슬래시 두 개를 사용하십시오. 예를 들어, 디렉토리 끝에 backupdir = ~ / .vim / .backup //- "//"를 설정하면 모든 경로 구분 기호가 백분율 "%로 대체 된 파일 이름이 전체 경로에서 파일까지 빌드됩니다. "표시. 이는 보존 디렉토리에서 파일 이름 고유성을 보장합니다.
Hacknightly 2016 년

25

해당 파일을 끄려면 다음 행을 .vimrc (UNIX 기반 OS의 vim 구성 파일)에 추가하십시오.

set nobackup       #no backup files
set nowritebackup  #only in case you don't want a backup file while editing
set noswapfile     #no swap files

12
:set nobackup 

백업을 끕니다. 여전히 백업 파일을 원하지만 중앙 폴더에있는 경우 backupdir을 설정할 수도 있습니다. 이렇게하면 작업 디렉토리가 ~ 파일로 어지럽히 지 않습니다.

백업에 대한 자세한 정보는 : he backup 아래에 있습니다 .


12

또한 다른 백업 확장명과 백업을 저장할 위치를 설정할 수도 있습니다 ( ~/.vimbackupsLinux를 선호 합니다). 다음을 통해 "버전 화 된"백업을 사용했습니다.

au BufWritePre * let &bex = '-' . strftime("%Y%m%d-%H%M%S") . '.vimbackup'

동적 백업 확장명 ( ORIGINALFILENAME-YYYYMMDD-HHMMSS.vimbackup)을 설정합니다 .


3
백업 디렉토리를 설정하는 방법을 포함하고 싶을 수도 있습니다. 예를 set backupdir=~/.vimbackups들어 ~ / .vimrc
rampion

1
vim은이 기술을 완전히 설명합니다. :help backupext
netjeff

8

이 줄을 당신의 vimrc:

set nobk nowb noswf noudf " nobackup nowritebackup noswapfile noundofile


그것이 될 것입니다 :

C:\Program Files (x86)\vim\_vimrc

모든 사용자를위한 시스템 전체 vim 구성을위한 파일.

noundofileWindows에서 마지막 *~파일을 설정하면 편집 후 tilda 파일 이 생성되지 않습니다.


Vim에 기본적으로 해당 줄이 포함되기를 바랍니다. 못생긴 디렉토리를 좋아하는 사람은 없습니다.

사용자가 먼저 고급 백업 / 실행 취소 파일 기능을 사용 하려는지 여부와 방법을 선택할 수 있습니다.

이것은 Vim에서 가장 성가신 부분입니다.

다음 단계는 설정 중일 수 있습니다.

set noeb vb t_vb= " errorbells visualbell

경고음을 비활성화하려면 뿐만 아니라 :-)


정말 감사합니다! "noundofile"은 마침내 그 신랄한 쓰레기를 없애는 옵션이었습니다 . (그리고 나는 당신이 당신의 글에 쓴 다른 모든 것에 100 % 동의합니다!)
pwmusic

6

.swpvim 에서 파일을 잠금 및 복구 파일로 사용하는 것이 맞습니다 .

퍼팅 시도 set nobackup이러한 파일을 원하지 않는 경우의 vimrc에. 전체 특종을 원하거나 대신 .bak 파일을 원하면 다양한 백업 관련 옵션에 대해서는 Vim 문서 를 참조하십시오 .


잠금 파일로 목적을 언급 한 +1 나는 그것을 생각하지 않았다.
Tomalak

5

나를 위해 일한 유일한 옵션은 ~ / .vimrc 파일 에이 줄을 넣는 것입니다.

noundofile을 설정

백업 파일을 참조하는 다른 옵션으로 ~ (물결표)로 끝나는 임시 파일을 만들지 못했습니다.


이것은 마침내 나를 위해 일했습니다. 왜 다른 답변에 언급되지 않습니까? 이렇게하면 .<filename>.un~파일 이 제거되고 다른 옵션은 <filename>~파일 만 제거 됩니다.
JLT

0

set noundofile~ _gvimrc 에 추가 해야했습니다

"~"디렉토리는 다음 cd ~명령으로 디렉토리를 변경하여 식별 할 수 있습니다.

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