연결을 끊어 vim에서 세션을 끊을 때마다 dred로 가득 차 있습니다 (그러나 vim을 계속 사용합니다 ... 나는 Masochistist가 있어야합니다). 파일이 내 작업을 파기 할 때까지 기다렸습니다. vim 스왑 파일 작업에 대한 모범 사례는 무엇입니까? 당신은 가장 새로운 것을 선택합니까? 파일이 원하는 방식으로 작동하면 스왑 파일 만 삭제합니까? 그것들을 어떻게 제거합니까?
연결을 끊어 vim에서 세션을 끊을 때마다 dred로 가득 차 있습니다 (그러나 vim을 계속 사용합니다 ... 나는 Masochistist가 있어야합니다). 파일이 내 작업을 파기 할 때까지 기다렸습니다. vim 스왑 파일 작업에 대한 모범 사례는 무엇입니까? 당신은 가장 새로운 것을 선택합니까? 파일이 원하는 방식으로 작동하면 스왑 파일 만 삭제합니까? 그것들을 어떻게 제거합니까?
답변:
vim 은 사용자가 직접 작성할 때까지 변경 사항을 작성하지 않으므로 파일 복구는 항상 안전 합니다. 따라서 스왑 파일에서 복구 한 다음 저장하지 않고 닫아도 아무런 변화가 없습니다.
모든 스왑 파일을 같은 장소에두기 위해 vim을 사용하십시오.
set directory^=$HOME/.vim/swap//
또는 원하는 곳 어디에서나. //
파일 이름 끝에 사용 하면 vim이 스왑 파일 이름에 절대 파일 경로를 사용하므로 이름 충돌이 발생하지 않습니다. 디렉토리가 존재하는지 또는 vim이 디렉토리를 사용하지 않는지 확인하십시오 (생성하지는 않음).
참고 : 이것은 환경 변수에서만 작동합니다. vimscript 변수를 사용하려면 :execute
마술 을 사용해야 합니다.
execute "set directory^=".my_vim_home_var."/swap//"
Vim의 도움은이 상황에서 사용할 수있는 매우 유용한 명령을 제안합니다 :DiffOrig
. 그것은의 기본 정력 명령하지 그래서에서 구현을 복사, :h :DiffOrig
귀하의 vimrc에. ( $VIMRUNTIME/defaults.vim
vim8이 있는 경우 에도 있습니다 ). 이제 파일을 복구하고 DiffOrig를 실행하여 수정되지 않은 버전에서 변경된 사항에 대한 정보를 얻을 수 있습니다.
여러 스왑 파일의 내용을 비교하려면 파일을 서로 다른 스왑 파일로 복구 한 다음 결과를 임시 파일에 씁니다. 이제 파일을로드하고 :diffthis
각 파일에서 실행 하고 원하는대로 변경 한 후 원래 파일에 다시 쓰고 임시 파일과 스왑 파일을 삭제하십시오.
:swapname
: vim이 현재 버퍼의 스왑 파일에 사용하는 이름을 얻습니다 ( :h :swapname
)
:recover
: vim을 시작할 때와 같은 방식으로 선택한 파일을 복구하고 R( :h :recover
)를 누릅니다.
Vim은 복구에 관한 사용자 매뉴얼의 전체 섹션을 가지고 :usr_11.txt
있습니다 : 스왑 파일에 대한 Vim의 참조 도움말 : :h swap-file
, h recovery
디렉토리 옵션에 대한 도움말 (스왑 파일 위치 설정) ::h 'directory'
편집 : @B Layer의 주석에서 지적한 것처럼 디렉토리 설정에 대한 수정 된 예
exec
... set directory^=$HOME/.vim/swap//
긴만큼 잘 작동 $HOME
초기화 된 환경 변수입니다. 참조하십시오 :h expand-env
. 또한 작동 dictionary
, undodir
그리고 backupdir
몇 가지 이름을.
개인적으로 스왑 파일과 백업 파일은 어디서나 스왑 파일과 백업 파일을 생성하고 종종 충돌을 일으키기 때문에 스왑 및 백업 파일을 해제했습니다. Vim의 지속적 실행 취소 기능은 훨씬 더 안정적이며 오류가 없습니다.
Vim은 현재 영구 실행 취소 기능을 가지고 있으며 훨씬 세분화 된 백업 방법입니다. 를 누를 때마다 Esc파일의 현재 상태가 캡처됩니다.
:undolist
, 또는 gundo 또는 undo-tree 와 같은 플러그인을 사용 하여 실행 취소 기록을 찾아 볼 수 있습니다.
이 방법으로 vim을 사용하려면 :
쉘에서 :
mkdir ~/.vim/undodir
Vim에서
set undodir=~/.vim/undodir
set undofile
스왑 파일을 끄려면 : :set noswapfile
'writebackup'
또 다른 문제를 해결합니다). 영구 실행 취소 기능을 활성화해도 컴퓨터가 충돌하는 경우 도움이되지 않습니다. 당신은 할 수 스왑 파일이 다른 이유 (현대 OS의 안정성, UPSes의 존재)을 위해 필요하지만, 당신이 대답하지 않은 주장한다. 2. 설정 'undodir'
은 영구 실행 취소를 활성화 하지 않습니다 ! 'undofile'
이것을 설정해야합니다