답변:
Vim은 기본적으로 백업 파일을 남기지 않습니다. Vim이 버퍼를 디스크에 저장하는 동안 존재하는 일시적인 파일 일뿐입니다. :help backup-table
이 동작에 설명 된대로 'backup'
및 'writebackup'
옵션 으로 제어 할 수 있습니다.
'backup' 'writebackup' action ~
off off no backup made
off on backup current file, deleted afterwards (default)
on off delete old backup, backup current file
on on delete old backup, backup current file
스왑 파일은 전용 디렉토리에 수집하는 것이 유용 할 수 있습니다. 'directory'
옵션을 사용하여 수행 할 수 있습니다 . 예를 들어
:set directory^=$HOME/.vim/tmp//
$HOME/.vim/tmp
Vim이 스왑 파일을 만들 때 사용하려고하는 디렉토리 목록의 헤드에 추가 합니다. 후행으로 //
인해 Vim은 전체 경로 이름을 파일로 인코딩하므로 다른 디렉토리의 비슷한 이름의 파일과 충돌하지 않습니다.
주의 사항 : 스왑 파일이 다른 위치에 저장되어 있기 때문에 여러 사용자가 동일한 파일을 편집하려고 할 때 Vim이 알 수있는 기능을 효과적으로 비활성화합니다.
아래의 스 니펫 ( tpope의 vimrc 에서 수정)은 수정되지 않은 버퍼의 스왑 파일을 비활성화합니다. 여러 파일을 열었을 때 Vim / 컴퓨터가 충돌하면 남아있는 스왑 파일은 수정 된 파일의 경우
autocmd CursorHold,BufWritePost,BufReadPost,BufLeave *
\ if isdirectory(expand("<amatch>:h")) | let &swapfile = &modified | endif
주의 사항 : 스왑 파일은 버퍼가 수정 된 경우에만 존재하므로 설정과 비슷한 효과가 있습니다 'directory'
. 버퍼가 수정되지 않으면 다른 Vim이 예고없이 편집을 시작할 수 있습니다. 두 번째 Vim이 첫 번째 Vim이 더 많은 변경을 수행하기 전에 저장하면, 사용자가 저장을 시도하거나 파일이 수정되었는지 확인하기 위해 Vim을 트리거 할 때까지 통지되지 않습니다.
.vimrc
공유 서버를 포함한 여러 컴퓨터에서 내 컴퓨터를 사용 합니다. 필자는 사람들이 내가 작업하는 파일을 볼 수있는 것을 원치 않으며 홈 디렉토리를 비교적 깨끗하게 유지하는 것을 좋아합니다. 그래서 이것은 Linux 및 Mac OS X에서 잘 작동하는 솔루션입니다.
" Sets central temp file location, to prevent local default behavior.
if isdirectory($HOME . '/.vim/.tmp') == 0
:silent !mkdir -m 700 -p ~/.vim/.tmp > /dev/null 2>&1
endif
set backupdir=~/.vim/.tmp ",~/.local/tmp/vim,/var/tmp,/tmp,
set directory=~/.vim/.tmp ",~/.local/tmp/vim,/var/tmp,/tmp,
.tmp
디렉토리 ~/.vim
가 존재하지 않는 경우 디렉토리 가 작성 됩니다. 이것은 스왑 파일의 새로운 홈입니다. 실행 취소 파일의 경우 다음과 같은 내용도 있습니다 .vimrc
(꽤 비슷합니다).
if exists("+undofile")
" undofile -- This allows you to use undos after exiting and
" restarting. NOTE: only present in 7.3+
" :help undo-persistence
if isdirectory( $HOME . '/.vim/.undo' ) == 0
:silent !mkdir -m 700 -p ~/.vim/.undo > /dev/null 2>&1
endif
set undodir=~/.vim/.undo
set undofile
endif
이것이 내 vimrc에서하는 일입니다.
fun! MkdirIfNeeded(dir, flags, permissions)
if !isdirectory(a:dir)
call mkdir(a:dir, a:flags, a:permissions)
endif
endfun
" Set (& create if needed) a temp directory to keep backup & swap files
if has('win32')
let whoami = substitute(system("whoami /LOGONID"), '\n', '', '')
let tmpdir = 'C:/tmp/vim_' . whoami
else
let whoami = substitute(system("whoami"), '\n', '', '')
let tmpdir = '/var/tmp/vim_' . whoami
endif
call MkdirIfNeeded(tmpdir, 'p', 0700)
let &backupdir = tmpdir
let &dir = tmpdir
let &undodir = tmpdir
이 파일을 만들고 /var/tmp/vim_<username>
이를 사용하여 모든 vim 관련 파일을 저장합니다. 프로젝트 디렉토리를 깨끗하게 유지하십시오.
사용 whoami
하면 별도의 디렉토리를 사용하면서 vimrc를 전체적으로 (예 : 사용자 및 루트) 사용할 수 있습니다. 필요하지 않은 경우 빠른 시작을 위해 하드 코딩 된 디렉토리로 바꿀 수 있습니다. ~/.vim/
디렉토리 를 사용할 수도 있지만 /var/tmp
일반적으로 별도의 파일 시스템이기 때문에 사용 하는 것이 좋습니다.
재부팅 할 때 종종 지워 /var/tmp
지기 때문에 사용 /tmp
합니다. 파일을 열 때 사람들이 잠재적으로 유해한 작업을 수행하기 위해 파일을 배치 할 수 있기 때문에이 디렉토리를 세계에 쓸 수있는 파일로 원하지 않을 것입니다.
adduser
사용자 또는 사용자를 작성하는 데 사용하는 모든 것에 추가 할 수 있습니다. 어쨌든 대부분의 사람들은 신뢰할 수있는 컴퓨터에서 Vim을 사용합니다 (그러나 귀하의 의견은 좋은 것입니다).
$HOME
어딘가에 넣지 않았는지 잘 모르겠습니다 .
/var/
다른 파일 시스템입니다. 이 이론이가 쓰기를 많이 방지 할 수 있다는 것입니다 /
, /usr
또는 /home
덜 분열 및 충돌의 경우 파일 손상의 위험을 선도 ...이 사서함과 물건에 이유도 /var
에 기본적으로, 그리고 homedir ...
/var/tmp
항상 세계 쓰기가 가능합니다. 시스템 임시 디렉토리입니다. (글쎄, 당신은 그것을 바꿀 수는 없지만, 유닉스 계열 시스템은 그것을 깨뜨린 후에 조각을 유지할 수있게 된 것들 중 하나입니다). 시스템에 다른 사용자가있는 경우/var/tmp/vim_«your_username»
원하는 권한으로 만들 수 있습니다 . 그런 다음 중요한 파일에 대한 심볼릭 링크로 채우십시오. vim 임시 파일에 의해 손상 될 수 있습니다.