자식 저장소에있는 파일을 편집 할 때 noswapfile을 설정하도록 vim을 구성 할 수 있습니까?


0

파일이 자식 저장소에 존재하는 경우 주어진 버퍼에 대해 vim 스왑 파일 (숨겨진 복구 파일)을 비활성화하는 데 사용할 수있는 vim API 및 기능은 무엇입니까?

git repos 내부에서 우연히 변경 사항이 저장되는 것에 대해 걱정할 필요가 없으므로 자동 저장 플러그인을 활성화하고 싶습니다. 그러나 git repos 외부의 다른 버퍼의 경우 실수로 파일을 수정하는 자동 저장을 원하지 않고 vim 복구 파일을 유지하고 싶습니다.

나는 이것이 vim 플러그인 프로그래밍에 익숙해지기위한 좋은 플러그인 프로그래밍 작업이라고 생각하지만 누군가가 대략 어떤 접근 방식을 알고 있다면 그것을 고맙게 생각할 것이다.

답변:


1

스왑 파일 비활성화

기존 버퍼의 경우 다음을 수행 할 수 있습니다 :setlocal noswapfile. 이렇게하면 기존 항목이 제거되고 복구 기능이 꺼집니다. 새 버퍼를 열 때 직접 추가 할 수도 있습니다:noswapfile edit ...

Git 리포지토리 감지

Git 루트 디렉토리에서 Vim을 항상 열면 간단합니다 isdirectory('.git'). 그렇지 않으면 부모 디렉토리도 확인해야합니다.

let gitDirspec = finddir('.git', '.;')
let isGitRepo = !empty(gitDirspec)

또는 vcscommand.vim 플러그인 은 다양한 버전 제어 시스템 유형 (Git 중)에 대한 탐지 기능을 제공합니다.

let isGitRepo = VCSCommandGetVCSType('') ==? 'git'

그것을 연결

Git 리포지토리의 정적 목록이 있다면 경로를 :autocmd파일 사양 패턴에 직접 넣을 수 있습니다.

:autocmd BufNew,BufRead /path/to/repo1/**,/path/to/repo2/** setlocal noswapfile

탐지를 실행하려면 열린 각 파일에서 autocmds를 실행해야합니다.

:autocmd BufNew,BufRead * if VCSCommandGetVCSType('') ==? 'git' | setlocal noswapfile | endif
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.