Vim이 자동 저장 파일을 만들 수 있습니까? 자동 저장하므로 심한 충돌 등에서 살아남는

일부 워드 프로세서 및 텍스트 편집기는 편집중인 파일을 수시로 자동 저장하므로 심한 충돌 등에서 살아남는 데 매우 편리합니다.

Vim이 특정 간격 후에 파일을 자동 저장하도록하는 방법이 있습니까?



답변

내장 옵션은 없지만 :help 'autosave'(todo.txt에서) 이러한 옵션이 수행 할 수있는 작업에 대한 설명을 참조합니다.

이를 구현하는 한 가지 가능한 방법은 CursorHoldautocommand 이벤트 를 사용하는 것 입니다. 이 이벤트는 사용자가 키를 'updatetime'밀리 초 동안 누르지 않으면 트리거됩니다 .

autocmd CursorHold * update

:update이 변경되는 경우 명령은 버퍼를 저장합니다. 삽입 모드가 활성화되어있는 동안이 작업 CursorHoldI을 수행하려면 이벤트 목록에 추가 할 수 있습니다.

autocmd CursorHold,CursorHoldI * update

다른 대안은 'autowrite'외부 명령을 실행하기 전에 (실행하기 전에 저장하는 데 유용 :make) 다른 버퍼로 전환 하기 전에 버퍼를 저장 하는 옵션 입니다.


답변

Vim에는 자동 저장 기능이 있지만 “복구”파일에 저장합니다.

예를 들어 MyFile.txtvim은 문서를 편집 할 때 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


답변

VIM-작업 공간 플러그인은 필요에 따라 수있는 매우 사용자 정의 자동 저장 기능이 있습니다. 기본적으로 작업 공간 세션 (주요 기능)에있을 때 자동 저장을 사용하도록 설정하지만 원하는 모든 항목 인 경우 항상 자동 저장하도록 설정할 수 있습니다 ( let g:workspace_autosave_always = 1).


답변

텍스트가 변경 될 때마다 버퍼를 저장하십시오.

autocmd TextChanged,TextChangedI <buffer> silent write

이것은 나를 위해 작동합니다.

출처