간단한 vim 구문 강조 표시 만들기


25

다음 형식의 항목 으로 구성된 간단한 종류의 데이터베이스 파일이 있습니다.

변수 =

간단한 vim 구문을 강조 표시하고 특정 파일 확장자로 설정하고 싶습니다.

예를 들어 가변 부분은 연한 파랑이고 부분은 밝은 빨강 일 수 있습니다.

나는 그것을 인터넷 검색과 같은 것들을 통해 온 $vimruntime\syntax\, syntax set=, syntax match, 및 hi키워드, 결국 그것을 나 자신을 설정할 수 없습니다

왼쪽과 오른쪽을 일치시키고 별도로 채색하여 실현할 수있는 매우 간단한 vim 코드 스 니펫을 원합니다.

답변:


31

파일 확장자가 다음과 같다고 가정하면 *.foo

  1. 다음 파일과 디렉토리가 없으면 작성하십시오.

    $HOME/.vim/ftdetect/foo.vim
    $HOME/.vim/syntax/foo.vim
    
  2. 다음을 넣습니다 $HOME/.vim/ftdetect/foo.vim.

    autocmd BufRead,BufNewFile *.foo set filetype=foo
    
  3. 다음을 넣습니다 $HOME/.vim/syntax/foo.vim.

    syntax match FooKey   /^[^=]\+/
    syntax match FooValue /[^=]\+$/
    
  4. 의 맨 끝에 다음 줄을 넣어 $HOME/.vimrc(또는 적어도 한 후 모든 colorscheme라인) :

    highlight FooKey   ctermfg=cyan guifg=#00ffff
    highlight FooValue ctermfg=red  guifg=#ff0000
    
  5. 어딘가에 다음 줄이 있는지 확인하십시오 ~/.vimrc.

    syntax on
    

와우, OP는 하나의 가격으로 거의 동일한 두 가지 솔루션을 얻었습니다! 두 솔루션이 매우 유사하지만 세부 사항이 다른 방식이 마음에 듭니다.
Ingo Karkat

그것은 작동하지만, 다시 내가 수동으로 입력 할 필요가 ftype=매번에 정력을, 어떤이 없었다 fdetect의 디렉토리 $vimrnutime(전, 창에있어 %programfiles(x86)%\vim\vim74\ ) 내가 그것을 만들었지 만 여전히 반응하지 않습니다

당신 syntax on은 당신의 vimrc에 필요 합니다.
romainl

20

구문 스크립트

~/.vim/syntax/simple.vim다음 내용 으로 파일 을 작성하십시오 .

" Quit when a syntax file was already loaded.
if exists('b:current_syntax') | finish|  endif

syntax match simpleVar "\k\+" nextgroup=simpleAssignment
syntax match simpleAssignment "=" contained nextgroup=simpleValue
syntax match simpleValue ".*" contained

hi def link simpleVar Identifier
hi def link simpleAssignment Statement
hi def link simpleValue String

let b:current_syntax = 'simple'

이는 세 가지 구문 요소와 일치하며 기본 색상을 제공합니다. 하나는 일반적으로 명시적인 색을 정의하지 않고, 대신 색 구성표로 정의 된 기본 강조 그룹 으로 연결합니다 . 를 통해 모두 나열 할 수 있습니다 :hi. 미세 조정을 위해 읽기 :help :syntax:help usr_44.txt, 그리고 빔과 구문 스크립트가 배를 보라.

파일 유형 탐지

지금까지 수동 :set syntax=simple으로 활성화 해야 합니다. 이 작업을 자동으로 수행하려면 Vim에 새 파일 형식 에 대해 알려야 합니다.

~/.vim/ftdetect/simple.vim다음 내용 으로 파일 을 작성하십시오 .

autocmd BufNewFile,BufRead *.simple setf simple

파일 이름 (cp. :help autocmd-patterns)을 통해 파일을 식별 할 수 있다고 가정합니다 . 경로 (파일 위치) 또는 내용을 기반으로 감지 할 수도 있습니다. :help new-filetype세부 사항이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.