현재 디렉토리에있는 모든 파일에 대해 Vim 설정을 어떻게 지정합니까?
이상적인 해결책은 Vim이 ~ / .vimrc를 검색하기 전에 현재 디렉토리에서 .vimrc를 검색하고 읽은 다음 전체 트리에 설정을 적용하는 것입니다.
나는 플러그인 을 보았지만 이것은 플러그인을 설치해야하므로 적용된 설정이 투명하지 않다는 것을 의미합니다. 반대로, 모델 라인은 사용자의 vimrc 또는 특정 vim 호출에 관계없이 해당 파일에 대해 모델 라인 설정이 적용되므로 투명합니다.
내가 시도한 것은
- 작업 디렉토리에 .vimrc 배치
:so vimrc
modeline에서.
보안상의 이유로 둘 다 작동하지 않는 것 같습니다. vimrc의 모든 기능이 필요하지 않습니다. 모델 린이 허용하는 설정에 묶여 있으면 충분합니다. 제 목표는 vimmers가 프로젝트에서 코딩 표준을 쉽게 채택 할 수 있도록하는 것입니다.
답변
나는 플러그인 방식 의 옹호자입니다 . 몇 가지 이유가 있습니다.
- 모델 인은 특히 제한적입니다. “for-snippet의 중괄호가 줄 바꿈에 있어야합니까?”와 같이 다른 (ft) 플러그인을 조정하는 변수를 설정하거나 그들로부터 함수를 호출 할 수 없습니다 (나는 자신을 제한하지 않습니다). 코딩 표준에 따라 현재 디렉토리에 따라 사용할 메이크 파일도 설정했습니다.)
- DRY : 모델 인을 사용하면 모든 파일에서 설정을 반복해야합니다. 설정하거나 변경할 조정 사항이 너무 많으면 유지 관리가 금방 어려워지고 템플릿 확장 플러그인을 사용해야합니다 ( 프로젝트에 여러 명의 vimmer가있는 경우 고려해야합니다).
- 모든 사람이 vim을 사용하여 개발하는 것은 아닙니다. 다른 사람들의 편집자 설정에 방해 받고 싶지 않습니다. 왜 그들의 설정을 기생시켜야합니까?
- vimmers에게 .vimrc의 동일한 줄을 복사하여 붙여넣고 유지하도록 요청하는 대신 동일한 플러그인을 설치하도록 요청하는 것이 더 쉽습니다.
- 설정은 다른 프로젝트 파일 (cvs / svn / git / whatever)과 함께 저장할 수 있습니다.
- 프로젝트별로 구성 파일을 만드는 것은 정말 쉽습니다. 플러그인을 사용하면 전체 프로젝트의 코딩 표준에 대한 전역 구성 파일과 각 하위 프로젝트에 대한 특정 구성 파일 (사용할 makefile, 호출 할 실행 파일)이 있습니다. , …)
BTW, sth의 솔루션 을 사용하여 단일 구성 파일을 소싱 할 수 있습니다. 이것은 .vimrc가 비 글로벌 옵션으로 기생해야한다는 점을 제외하고 플러그인 접근 방식과 매우 유사하며 쉽게 다중 / 공유 구성 파일을 지원하지 않습니다.
답변
이런 걸 넣을 수 있습니다 $VIM/vimrc
autocmd BufNewFile,BufRead /path/to/files/* set nowrap tabstop=4 shiftwidth=4
답변
사용하지 않는 것이 좋습니다. set exrc
을 사용하더라도 set secure
* nix에서 파일을 소유하고 있다면 vim은 자동 명령, 쉘 등을 실행합니다. 따라서 해당 tarball에서 파일을 편집 한 경우 다음을 .vimrc
포함 하여 보냈습니다 .
autocmd BufEnter * :silent! !echo rm -rf ~/
당신은 아마 나보다 덜 재미있을 것입니다.
답변
이 질문은 오래되었지만 매우 자연스럽고 지속적인 관심사 인 것 같습니다.
내 솔루션은 매우 간단합니다. 나는 장소 .vimrc
내 프로젝트의 루트 디렉토리에 파일을. .vimrc
파일 의 첫 번째 줄은 일반적으로 소스 ~/.vimrc
를 지정한 다음 원하는 특정 구성을 추가합니다. 나는 별칭 tvim='vim -u .vimrc'
을 지정하고 tvim
개인 프로젝트 디렉토리에서 사용합니다. “신뢰할 수있는 vim”을 의미하는 “tvim”은 .vimrc
파일이 있는 디렉토리에서 실행 했는데 문제가 발생하면 명시 적으로 신뢰한다고 말했기 때문에 나 자신을 비난 할 사람이 없다는 뜻입니다. 또한 특정 종류의 프로젝트에 대해 원하는 항목을 소프트 링크 할 수 있도록 이러한 그룹을 저장해 둡니다.
답변
작업 디렉토리에 .vimrc를 배치하는 것은 실제로 지원되며 기본적으로 비활성화되어 있습니다. 참조 :h 'exrc'
및 :h startup
자세한 내용은, 설정은 'exrc'
읽기 가능하게 .vimrc
현재 디렉토리를.
:set secure
이것을 사용할 때도 추천합니다 . 이것은 현재 디렉토리에서 :autocmd
, 쉘 및 쓰기 명령을 잠급니다 .vimrc
.
살펴볼 가치가있는 또 다른 것은 :h session
프로젝트에 대한 표준보기 및 설정 으로 세션 ( )을 설정하는 것입니다.
즉, Luc Hermitte가 직접 설명한 플러그인 옵션을 사용할 것입니다.
답변
요즘 ANYTHING에 대한 모든 “자동 실행”기능으로 보안 위험을 최소화하려면 플러그인 (휴대용 수하물) 대신 vim의 기존 기능을 활용하는 것이 좋습니다.
예 :
내 로컬 폴더의 vimrc 파일 이름은 “_gvimrc”(의도적으로)입니다. 이것은 펜과 같은 사람들이 우리의 비용으로 자신을 즐겁게하는 희망을 줄입니다. 🙂
$ VIM / .vimrc 파일에 다음을 삽입했습니다.
if filereadable("_gvimrc")
source _gvimrc
endif
끝에.
나는 “fileexists ()”보다 “fileReadable ()”을 사용한다. 나중에 여러 개의 (10 개 이상의) 파일을 동시에 열 때 고문을 당할 때 약간의 기이함이 있기 때문이다.
물론 고유 한 파일 이름을 지정하여 잠재적 인 문제를 일으키는 원인을 더 명확하게 할 수 있습니다. “_mygvimrc”, “_gobbledygook”등. 하나의 표준화 된 이름을 정하고 그에 따라 $ VIM / .vimrc에서 소스를 지정하면됩니다. 이를 위해 vi / vim 내부에 의존하면 이식성 문제가 배제됩니다. 그러나 나중에 vim으로 $ VIM / .vimrc 파일을 편집하는 경우 재귀 적 소싱을 방지하기 위해 이름을 .vimrc (또는 _vimrc)로 지정하지 마십시오.
Windoze 98SE부터 Windork XP Pro, 현재 Windorkier 7 (이미 5 년 이상)을 통해 이것을 사용하고 있습니다. Explorer에서 .txt 파일 목록을 표시 한 다음 “Edit with multiple Vim”을 사용하면 여러 vim 창이 동시에 열립니다. 제 작업을 위해 매일 여러 번이 작업을 수행합니다. 모든 파일은 내 로컬 _gvimrc에서 설정 한 것으로 처리되었습니다.
답변
사람들이 며칠마다 파일을 추가하지 않는다고 가정하면 각 파일의 맨 위에 모델을 추가 할 수 있습니다. 실제로 버전 제어 시스템에서 허용하는 경우 각 파일이 체크인 될 때 모델 인이 있어야한다는 규칙을 시행 할 수 있습니다.
