Vim : 디렉토리의 파일에 설정 적용
현재 디렉토리에있는 모든 파일에 대해 Vim 설정을 어떻게 지정합니까?
어디에서 해결은 Vim이 ~ / .vimrc를 검색하기 전에 현재 디렉토리에서 .vimrc를 검색하고 읽은 다음 전체 트리에 설정을 적용하는 것입니다.
나는 플러그인 을 설치해야하는 것을 의미합니다. 라인 설정, 모델 라인은 사용자의 vimrc 또는 특정 vim 호출에 관계없이 해당 파일에 대해 모델 라인 설정이 적용되는 투명합니다.
내가 시도한 것은
- 작업 디렉토리에 .vimrc 배치
:so vimrcmodeline에서.
보안상의 작동 둘 다 작동하지 않는 것입니다. vimrc의 모든 기능이 필요하지 않습니다. 모델 린이 허용하는 설정에 여유 있으면 충분합니다. 제 목표는 vimmers가 프로젝트에서 코딩 표준을 채택 쉽게 할 수있는 것입니다.
나는 방식 의 옹호자입니다 . 몇 가지 이유가 있습니다.
- 모델 인은 특히 제한적입니다. "for-snippet의 중괄호가 줄 바꿈에 다른 자신을 제한하지 않습니까?"와 같이 조정하는 변수를 설정하거나 그들로부터 함수를 호출 할 수 없습니다. 코딩 표준에 따라 현재 디렉토리에 따라 사용할 메이크 파일도 설정했습니다.)
- DRY : 모델 인을 사용하면 모든 파일에서 설정을 반복해야합니다. 하거나 변경할 사항 설정이 너무 많으면 유지 관리가 금방 어려워지고 템플릿 확장 플러그인을 사용해야합니다 (프로젝트에 여러 명의 vimmer가있는 경우 고려해야합니다).
- 모든 사람이 vim을 사용하여 개발하는 것은 아닙니다. 다른 사람들의 편집자 설정에 방해하고 싶지 않습니다. 왜 결혼식 설정을 기생 입고?
- vimmers에게 .vimrc의 모든 줄을 복사하여 붙이고 유지 요청하는 것이 더 많은 것입니다.
- 설정은 다른 프로젝트 파일 (cvs / svn / git / whatever)과 함께 사용할 수 있습니다.
- 프로젝트별로 구성 파일을 만드는 것이 정말 훌륭합니다. 플러그인을 사용하면 전체 프로젝트의 코딩 표준에 대한 전역 구성 파일과 각 하위 프로젝트에 대한 특정 구성 파일 (사용할 메이크 파일, 호출 할 실행 파일)이 있습니다. , ...)
BTW, sth의 솔루션 을 사용하여 단일 구성 파일을 소싱 할 수 있습니다. 이것은 .vimrc가 비 글로벌 옵션으로 기생해야한다는 점을 글로벌 옵션으로 기생해야한다는 점을 강조하고 쉽게 다중 / 공유 구성 파일을 지원하지 않습니다.
이런 걸 넣을 수 있습니다 $VIM/vimrc
autocmd BufNewFile,BufRead /path/to/files/* set nowrap tabstop=4 shiftwidth=4
사용하지 않는 것이 좋습니다. set exrc
을 사용하더라도 set secure* nix에서 파일을 소유하고 권한 부여 vim은 자동 명령, 쉘 등을 실행합니다. 따라서 해당 타르볼 파일을 편집에서 한 경우 다음을 .vimrc포함 하여 보냈습니다 .
autocmd BufEnter * :silent! !echo rm -rf ~/
당신은 아마 나보다 덜 재미있을 것입니다.
이 질문은 오래 지속되는 자연스럽고 지속적인 관심사 인 것입니다.
내 솔루션은 매우 간단합니다. 나는 장소 .vimrc내 프로젝트의 루트 디렉토리에 파일을. .vimrc파일 의 첫-th 줄은 일반적으로 소스 ~/.vimrc를 지정한 다음 원하는 특정 구성을 추가합니다. 나는 디렉토리를 tvim='vim -u .vimrc'지정하고 tvim개인 프로젝트에서 사용합니다. "신뢰할 수있는 vim"을 의미하는 "tvim"은 .vimrc파일이 있는 의미하는 디렉토리에서 실행 하고 뭔가 잘못하면 내가 그것을 의미하는 명시 적으로 말했기 때문에 자신을 비난 할 사람이 있다는 것을 의미합니다. 또한 특정 종류의 프로젝트에 대해 원하는 항목을 소프트 링크 할 수있는 기능 그룹을 저장해.
작업 디렉토리에 .vimrc를 배치하는 것이 바로 지원됩니다. 참조 :h 'exrc'및 :h startup자세한 내용은, 설정은 'exrc'읽기 가능하게 .vimrc현재 디렉토리를.
:set secure이것을 사용할 때도 추천합니다 . 이것은 현재 디렉토리에서 :autocmd, 및 쓰기 명령 쉘을 잠급니다 .vimrc.
가치가있는 살펴볼 또 다른 [해석] :h session프로젝트에, 대한 표준보기 및 설정 으로 세션 ( )을 설정하는 것입니다.
즉, Luc Hermitte가 직접 믹스 옵션을 사용할 것입니다.
요즘 모든 "자동 실행"으로 보안을 유지하는 대신 사용하는 것이 좋습니다. (휴대용 기능을 활용하는 것이 좋습니다.)
예 :
내 로컬 폴더의 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에서 설정 한 것으로 처리되었습니다.
사람들이 며칠마다 파일을 추가하지 않는다고 가정하면 각 파일의 상단에 모델 라인을 추가 할 수 있습니다. 실제로 버전 제어 시스템에서 허용하는 경우 각 파일이 체크인 될 때 모델이 있어야한다는 규칙을 시행 할 수 있습니다.
보안상의 이유로 플러그인 접근 방식에 동의합니다.
아직 언급되지 않은 아주 좋은 플러그인이 있습니다. .lvimrc프로젝트 디렉토리에서 를 사용할 수 있습니다 .
"localvimrc"를 사용해보십시오 :
http://www.vim.org/scripts/script.php?scriptid=441
https://github.com/embear/vim-localvimrc
"editorconfig"사용
적용하려는 코딩 표준의 종류가 들여 쓰기 스타일, 탭 크기, 파일 형식 및 문자 집합과 관련 이있는 경우 이러한 종류의 설정을 지정하는 교차 편집기 표준 인 "editorconfig" 를 살펴볼 수 있습니다 . 모든 편집자가 해당 구성을 따르도록합니다.
"editorconfig"사양을 사용하면 프로젝트 내에서 파일 확장자 또는 이름에 따라 다른 설정을 요청할 수 있습니다. (따라서 TAB을 사용하는 Makefile, 4 개의 공백을 사용하는 Python 스크립트 및 들여 쓰기를 위해 2 개의 공백을 사용하는 쉘 스크립트를 가질 수 있습니다.)
Vim에서 "editorconfig"를 사용하려면 플러그인이 필요합니다. 공식 웹 사이트에서 하나를 제공하지만 개인적 으로 순수한 Vimscript로 작성된 sgur / vim-editorconfig를 권장 하므로 외부 종속성에 대해 너무 걱정할 필요가 없습니다.
"editorconfig"는 편집기 간 호환성을 목표로하기 때문에 수행하는 작업이 매우 제한적이므로 일관된 공백, 파일 형식 (DOS 대 Unix) 및 인코딩 (유니 코드 utf-8 등)을 원하면 "editorconfig"를 선택하십시오. "는 당신을위한 것입니다.
vim-localrc 사용해보기
~/
|- .local.vimrc (1)
`- project/
|- .local.vimrc (2)
`- src/
|- .local.vimrc (3)
`- main.c
https://github.com/thinca/vim-localrc/blob/master/doc/localrc.txt
나는 존재하는 플러그인을 살펴 보았고 그 중 어떤 것도별로 좋아하지 않았기 때문에 vim-fugitive 에 편승 하는 간단한 함수를 작성했습니다 . 이것의 장점은 프로젝트의 루트가 항상 저장소의 루트라는 것을 알고 있으며 추가로 파일을 해시하여 트러스트 테이블을 유지할 수 있다는 것입니다. .vimrc파일에 다음을 넣으십시오 .
function LoadRepoVimrc()
let l:path = fugitive#repo().tree('.vimrc')
if filereadable(l:path)
let l:sha1 = fugitive#repo().git_chomp('hash-object',l:path)
if !exists('g:SAFE_VIMRC') | let g:SAFE_VIMRC = {} | endif
if has_key(g:SAFE_VIMRC,l:path) && g:SAFE_VIMRC[l:path] ==? l:sha1
execute 'source '.fnameescape(l:path)
elseif confirm("Trust ".l:path."?", "&Yes\n&No",2) == 1
let g:SAFE_VIMRC[l:path] = l:sha1
execute 'source '.fnameescape(l:path)
else
execute 'sandbox source '.fnameescape(l:path)
endif
endif
endfunction
autocmd User FugitiveBoot call LoadRepoVimrc()
set viminfo ^= !
경우 !옵션이 설정되어 viminfo설정, 다음 SAFE_VIMRC사전은 (음 실행 사이에 유지됩니다 ^그것은까지 혼란을하지 않도록하는 옵션을 앞에 추가하는 n옵션).
참고 URL : https://stackoverflow.com/questions/456792/vim-apply-settings-on-files-in-directory
'IT' 카테고리의 다른 글
| 배치 파일 내에서 출력 리디렉션 (0) | 2020.08.21 |
|---|---|
| CentOS에 Java SDK를 설치하는 방법은 무엇입니까? (0) | 2020.08.21 |
| 반복하지 않고 다차원 배열에서 "키"배열을 얻는 방법 (0) | 2020.08.21 |
| 오류 : Typescript 기능 1.5. (0) | 2020.08.21 |
| 발행 / 구독 패턴 (JS / jQuery에서)을 사용하는 이유는 무엇입니까? (0) | 2020.08.21 |