일부 워드 프로세서 및 텍스트 편집기는 편집중인 파일을 수시로 자동 저장하므로 심한 충돌 등에서 살아남는 데 매우 편리합니다.
Vim이 특정 간격 후에 파일을 자동 저장하도록하는 방법이 있습니까?
답변
내장 옵션은 없지만 :help 'autosave'
(todo.txt에서) 이러한 옵션이 수행 할 수있는 작업에 대한 설명을 참조합니다.
이를 구현하는 한 가지 가능한 방법은 CursorHold
autocommand 이벤트 를 사용하는 것 입니다. 이 이벤트는 사용자가 키를 'updatetime'
밀리 초 동안 누르지 않으면 트리거됩니다 .
autocmd CursorHold * update
:update
이 변경되는 경우 명령은 버퍼를 저장합니다. 삽입 모드가 활성화되어있는 동안이 작업 CursorHoldI
을 수행하려면 이벤트 목록에 추가 할 수 있습니다.
autocmd CursorHold,CursorHoldI * update
다른 대안은 'autowrite'
외부 명령을 실행하기 전에 (실행하기 전에 저장하는 데 유용 :make
) 다른 버퍼로 전환 하기 전에 버퍼를 저장 하는 옵션 입니다.
답변
Vim에는 자동 저장 기능이 있지만 “복구”파일에 저장합니다.
예를 들어 MyFile.txt
vim은 문서를 편집 할 때 revovery 파일을 생성합니다 .MyFile.txt.swp
. 시스템이 다운되거나 세션이 종료 된 경우 다음을 입력하여 다시 연결하고 기본적으로 중단 한 곳에서 복구 할 수 있습니다.
vim -r MyFile.txt
편집 할 파일이 열리고 마지막으로 변경 한 내용이 복구됩니다.
그런 다음 복구 된 버전을 일반적인 방법으로 저장할 수 있습니다 :w
.
불행히도, vim을 종료하면 .MyFile.txt.swp
주위 를 떠나 수동으로 제거해야합니다.
rm .MyFile.txt.swp
를 참조하십시오 “복구”남자 페이지
또한 제 11 장
답변
타이머의 Vim 8 기능을 사용하여 주기적으로 버퍼를 저장 하는 플러그인 vim-autosave 를 만들었습니다 .
답변
Vim이 포커스를 잃을 때마다 모든 것을 저장합니다.
autocmd FocusLost <your-patterns-here> silent! wall
내 패턴은 꽤 길며 여러 autocmds에서 사용하지만 완전성을 위해 다음과 같이 보입니다.
if exists(':keeppatterns')
let s:keeppatterns = 'keeppatterns '
else
let s:keeppatterns = ''
endif
augroup AutoSaveGroup
" :help file-pattern has some info,
" but some of it is is buried in the PATTERNS section of usr_40.txt
let s:autoPattern = "*.{c,h,[ch]pp,[acjt]s,inl,cg,cgfx,fx,py,bat,cmd,jam,vim,yml,yaml,vsprops,erb,rb,html,htm},SCons*,*vimrc"
autocmd!
execute "autocmd FocusLost" s:autoPattern "silent! wall"
execute "autocmd BufWritePre" s:autoPattern s:keeppatterns . 'call FixFormatting(expand("<afile>"))'
execute "autocmd FileChangedRO" s:autoPattern "silent !p4 edit %:p"
execute "autocmd FileChangedRO" s:autoPattern "write!"
autocmd FocusLost *.txt silent! wall
augroup END
답변
다른 사람들이 지적했듯이, vim에는 원본 파일이있는 곳 어디에서나 만들어 질 스왑 파일 (.swp)이 있지만 .vimrc 파일에서 .swp 디렉토리를 설정할 수 있습니다.
로 디렉토리를 생성 mkdir
한 다음 .vimrc를 해당 위치로 설정해야합니다.
set backup " make backup files
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp