
Vim 프로세스가 갑자기 종료되면(예: 시스템 충돌) SWP 파일이 남습니다. 나중에 Vim에서 원본 파일을 열면 복구 옵션이 제공됩니다. 자주 저장하는 습관이 있어서 복구된 파일은 저장된 파일과 대부분 동일합니다. 그러자 Vim은 이렇게 말합니다.
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
물론 지금은 .swp 파일을 삭제하고 싶습니다!
이 경우 Vim이 항상 SWP 파일을 자동으로 삭제하도록 하려면 어떻게 해야 하나요?
이를 위한 기본 설정이 없는 것 같아서 적절한 자동 명령 이벤트를 찾고 있습니다.
내가 찾은 한 가지 방법은 :e #
swap-exists 옵션이 다시 나타나도록 하는 메시지 이후에 "삭제"할 수 있는 것입니다. 하지만 매번 추가 단계를 수행할 필요는 없습니다.
답변1
참고: 어떤 운영 체제를 사용하고 있는지 밝히지 않았습니다. 다음은 Unix 셸에서 작동하지만 Windows를 실행하는 경우 기본 Cygwin 또는 다른 셸을 다운로드할 수 있습니다.
나는 당신과 똑같은 일을 했으며, :e
동일한 파일을 다시 열어 복구 파일을 삭제하는 옵션을 얻었습니다. 충돌이 발생하거나 예기치 않게 컴퓨터가 다시 시작된 후에는 vim -r
스왑 파일을 실행하고 복구가 진행되도록 하여 남은 Vim 복구 파일을 모두 정리합니다 .
파일이 있을 때~ 아니다변경됨
파일이 변경되지 않았다면 복구 파일을 즉시 삭제하고 싶습니다. Vim이 이 작업을 자동으로 수행할 수 있다면 좋겠지만 안타깝게도 그렇지 않습니다.
파일이 변경된 경우
파일이 변경된 경우 DiffOrig
명령을 실행하여 원본 버전과 복구된 버전 간의 차이점을 비교합니다. 복구 파일의 변경 사항이 만족스러우면 명령을 사용하여 파일을 저장하여 종료합니다 :x
. 그렇지 않은 경우 를 종료하여 복구된 변경 사항을 삭제합니다 :q!
. 복구 파일이 저장된 파일(예: )과 연결되어 있지 않은 경우 일반적으로 복구된 버퍼를 파일 이름이 있는 파일에 저장하는 데 .swp
사용합니다 .:w filename
DiffOrig 도우미
나는DiffOrig.vimrc
항상 사용할 수 있도록 my 명령을 내리세요 .
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
쉘 스크립트
현재 디렉토리 트리에서 모든 스왑 파일을 찾기 위해 쉘에서 다음 스크립트를 실행합니다. 그런 다음 각 스왑 파일은 Vim을 여는 데 사용됩니다."복구 모드"Vim이 닫힌 후에는 삭제됩니다.
find . -type f -name '.*.sw?' -exec vim -r "{}" -c DiffOrig \; -exec rm -iv "{}" \;
해당 옵션을 사용 하려면 파일을 삭제하려면 rm -i
확인( )이 필요합니다 . y
자신감이 있고 프로세스 속도를 높이고 싶다면 이 과정을 생략할 수 있습니다.