2014-11-08 6 views
1

내 노트북의 vim에 노트를 보관하고 있습니다. 내 노트에 구문 강조를 추가하고 싶습니다. 을 사용하면 향상시킬 수 있습니다. 그러나 지식의 모든 영역에 대해 백만 개의 서로 다른 파일 유형을 추가하고 싶지 않습니다. 예를 들어 컴파일러에 대한 필자의 노트는 개의 키워드가 FHS의 필자 노트와 다를 수 있습니다. 이 메모를 공유하십시오. 연구를 수행 한 후, 나는 내가 동작을 얻을 수 있다는 것을 발견했습니다. 하지만 매우 우아한 해결책처럼 보이지 않습니다. 여전히 자신의 .vimrc을 수정하도록 요청 저를 필요로하기 때문에vim 구문 파일을 문서와 동일한 디렉토리에 유지하십시오.

if (filereadable("./.custom_syntax.vim") 
    let mysyntaxfile = "./.custom_syntax.vim" 
    syntax enable 
else 
    syntax enable 
endif 

나는이 솔루션별로 좋아하지 않아요, 그러나 나는이 작업을 수행 할 수있는 방법이 없다는 것을 의심 : 나는 나의 .vimrc에 다음 줄을 추가 시스템에있는 어떤 것도 바꾸지 않고 . 또한 내가 어떤 파일을 메모가 아닌 디렉토리에 가지고 있다면, 파일 유형이 무엇인지 모르므로 vim은 .custom_syntax.vim 파일로 그들을 강조 표시합니다.

이것을 해결할 더 좋은 방법이 있습니까?

답변

0

이전 mysyntaxfile 변수를 사용하는 대신 :syntax enable (한 번)을 입력 한 다음 :source 구문 파일을 사용합니다. 당신은 옆에 원래 시조 vim 스크립트 파일을 보이는 :autocmd을 정의 할 수 있습니다

" Automatically source an eponymous <file>.vim or <file>.<ext>.vim if it exists, as a bulked-up 
" modeline and to provide file-specific customizations. 
function! s:AutoSource() 
    let l:testedScripts = [expand('<afile>') . '.vim'] 
    if expand('<afile>:e') !=# 'vim' 
     " Don't source the edited Vimscript file itself. 
     call add(l:testedScripts, expand('<afile>:r') . '.vim') 
    endif 

    for l:filespec in l:testedScripts 
     if filereadable(l:filespec) 
      execute 'source' fnameescape(l:filespec) 
     endif 
    endfor 
endfunction 
augroup AutoSource 
    autocmd! BufNewFile,BufRead * call <SID>AutoSource() 
augroup END 

당신은 당신의 빔 구성에서이 같은이 또는 뭔가가 필요합니까하지만.

관련 문제