실행 취소 파일을 어떻게 사용할 수 있습니까?


36

vim.org 의 마지막 뉴스 항목 은 'undofile'을 사용하여 기록을 저장하고 재부팅 후에도 변경 사항을 취소하는 방법에 대해 설명합니다.

지난 주말에 알게 되었 듯이 나 자신을 사용하는 기능은 많은 사용자에게 알려지지 않았습니다. Vim은 원하는만큼의 실행 취소 외에도 실행 취소 정보를 파일로 저장합니다. 따라서 Vim을 종료하고 컴퓨터를 재부팅 한 후에도 변경 한 내용을 취소 할 수 있습니다. 'undofile'에 대한 도움말을 참조하십시오. (브람 물레 나르)

이 기능을 어떻게 활성화하고 사용할 수 있습니까?


2
Bram은 아마도이 이벤트
Kurt Pfeifle

답변:


37

가장 간단한 버전은 ~/.vim/undo-dir/다음과 같습니다. 디렉토리를 작성 하고 다음에 다음을 추가하십시오 .vimrc.

set undodir=~/.vim/undo-dir
set undofile

그러나 완벽하지는 않으며 계속 읽는 것이 좋습니다. 내 자신의 .vimrc:

" Let's save undo info!
if !isdirectory($HOME."/.vim")
    call mkdir($HOME."/.vim", "", 0770)
endif
if !isdirectory($HOME."/.vim/undo-dir")
    call mkdir($HOME."/.vim/undo-dir", "", 0700)
endif
set undodir=~/.vim/undo-dir
set undofile

실행 취소 파일로 임의의 디렉토리를 어지럽히 지 않는 것이 좋습니다. 나는 설정 그래서 undodir하나의 실행 취소 디렉토리에 그들 모두를두고 옵션을. 한 가지 문제가 있습니다. 게으르고 모든 컴퓨터에서 해당 디렉토리를 만드는 느낌이 들지 않습니다 (버전 제어 시스템을 사용 .vimrc하여 여러 컴퓨터 에서 동기화 합니다). 고맙게도 Vim이 디렉토리를 확인하고 존재하지 않는 경우 작성하기가 쉽습니다.

0700실행 취소 디렉토리 의 모드 도 참고하십시오 (소유자에 대한 전체 권한, 다른 사람에 대한 권한 없음). 내가 편집 한 파일,시기 등은 비공개로 유지해야합니다. 그리고 이것은 내가 액세스 할 수있는 디렉토리이기 때문에 다른 누군가가 심볼릭 링크를 넣거나 실행 취소 파일 또는 시스템 임시 디렉토리 사용에 대해 걱정해야 할 사항에 대해 걱정할 필요가 없습니다.

마지막으로 시스템 임시 디렉토리가 아니며 시스템 임시 파일 정리 정책의 적용을받지 않습니다. 일주일 정도 걸리는 경우가 종종 있습니다. 그러나 그것을 영원히 자라지 않기 위해, 나는 내 안에 다음을 넣었습니다 crontab.

# m h  dom mon dow   command
 43 00 *   *   3     find /home/anthony/.vim/undo-dir -type f -mtime +90 -delete

따라서 90 일 동안 수정하지 않으면 삭제됩니다. (정말로, 실제로 그렇게 크지는 않지만 디스크의 저렴한 가격으로 쉽게 영원히 떠날 수 있습니다. 그러나 컴퓨터가 손상되면 개인 정보도 고려하십시오.)


자세한 답변 @derobert에 감사드립니다! 나는 이것이 오래된 질문이라는 것을 알고 있지만 오래된 vim 실행 취소 파일 ( vi.stackexchange.com/questions/16053/… ) 을 삭제하는 vimscript 방법을 찾으려고 노력했습니다 . 나는 그렇게하는 것이 더 깨끗하다고 ​​생각하지만 쉽지는 않다는 것을 증명합니다. vimscript를 사용하여 오래된 vim 파일을 삭제하려고 생각한 적이 있습니까? 그렇지 않다면 여전히 vimscript 대신 crontab을 사용 하시겠습니까?
Logan

1
@Logan vim 스크립트를 사용하면 vim이 실행 중일 때만 작동하며 여러 개의 vim이 실행 중이면 어떻게됩니까? 그 cron 라인은 간단하고, 그러한 문제를 겪지 않으며, 분명히 수정됩니다 ...
derobert

mkdir()함수는 매개 변수 "p"옵션을 사용하여 여러 디렉토리 구조를 만드는 것을 지원하는 것 같습니다 {path}. 따라서 위의 스크립트는 약간 단순화 될 수 있습니다. call mkdir($HOME."/.vim/undo-dir", "p", 0700)적어도 Vim 7.4.160에서 나를 위해 작품을 사용 합니다.
jdhao
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.