nvim에 추가 구문 강조 표시 추가; .config / nvim / after / syntax를 가져와 .vim 파일을로드 할 수 없습니다.
구문 강조 표시에 사용중인 플러그인에 구문 강조 표시를 추가하려고합니다 . 추가 구문 파일 fstrings.vim
을 ~/.config/nvim/after/syntax
폴더에 추가하려고 시도 했지만 nvim이 선택하지 않습니다.
내가 시도한 것 :
~/.config/nvim/after
및 / 또는~/.config/nvim/after/syntax
내 런타임 경로에 추가 되었는지 확인하십시오 .
- 만
~/.config/nvim/after
내 경로에 추가됩니다-:set rtp
>>로 확인runtimepath=~...,...,~/.config/nvim/after
-그러나 파일이로드 된 것을 볼 수 없습니다:scriptnames
. 파일을로드하려면 어떻게해야합니까?
- 파일 위치를
~/.config/nvim/after
대신~/.config/nvim/after/syntax
- 이것도 작동하지 않습니다.
- 파일을 수동으로로드하십시오.
- 이것은 실제로 수행 놀라 울 정도로 일을. 을 사용하여 파일의 구문을 수동으로 변경할 수
:set syntax=fstrings
있지만 플러그인에서 제공 한 원래 구문 강조 표시가 모두 사라지고에서 제공 한 강조 표시 (아래 이미지의 print 문 참조)fstrings.vim
만 사용됩니다. 이로 인해 경로가 올바르게 설정되었다고 믿게되지만 nvim은 시작 중에로드하기를 원하지 않거나 사용중인 플러그인으로 인해이를 무시합니다.
![](https://post.nghiatu.com/assets/images/s/4DKIo.png)
/after/
덮어 쓰기보다는 이전 설정 후 설정을 적용하는 데 폴더가 사용된다는 것을 알고 있습니다. 나는 이미 여기 와 여기 에서 해결책을 시도했지만 제대로 작동하지 못했습니다. 이것을 디버깅하는 방법에 대한 도움을 주시면 감사하겠습니다.
" ~/.config/nvim/after/syntax/fstrings.vim
syn match pythonEscape +{{+ contained containedin=pythonfString,pythonfDocstring
syn match pythonEscape +}}+ contained containedin=pythonfString,pythonfDocstring
syn region pythonfString matchgroup=pythonQuotes
\ start=+[fF]\@1<=\z(['"]\)+ end="\z1"
\ contains=@Spell,pythonEscape,pythonInterpolation
syn region pythonfDocstring matchgroup=pythonQuotes
\ start=+[fF]\@1<=\z('''\|"""\)+ end="\z1" keepend
\ contains=@Spell,pythonEscape,pythonSpaceError,pythonInterpolation,pythonDoctest
syn region pythonInterpolation contained
\ matchgroup=SpecialChar
\ start=+{{\@!+ end=+}}\@!+ skip=+{{+ keepend
\ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue,pythonDoctest
syn match pythonStringModifier /:\(.[<^=>]\)\?[-+ ]\?#\?0\?[0-9]*[_,]\?\(\.[0-9]*\)\?[bcdeEfFgGnosxX%]\?/ contained containedin=pythonInterpolation
syn match pythonStringModifier /![sra]/ contained containedin=pythonInterpolation
hi link pythonfString String
hi link pythonfDocstring String
hi link pythonStringModifier PreProc
답변
구문 규칙은 일반적으로 'filetype'버퍼에 대한 집합에 따라 이름이 지정되며 일반적으로 파일 확장자, 파일 이름 또는 파일 내용을 기반으로 감지되고 일반적으로 자동으로 설정됩니다.
Python에 대한 구문 강조 표시 를 확장 하려면 일반적으로 "python"
파일 유형 뒤에 스크립트 이름을 지정해야합니다 .
Vim 이 Python에 대한 구문 규칙 을 로드 할 때 syntax/python.vim
또는 이름이 지정된 파일에 대해 로드 됩니다 syntax/python/*.vim
(ftplugin 규칙은를 허용 python_*.vim
하지만 구문의 경우는 아닙니다.)
따라서 Python 파일 용으로로드되고 Python 용 번들 런타임 규칙이로드 된 후에 파일 ~/.config/nvim/after/syntax/python.vim
(또는 ~/.config/nvim/after/syntax/python/fstrings.vim
)의 이름을 지정해야합니다 .
또 다른 옵션은 'syntax'점으로 구분 된 여러 유형을 포함 하도록 옵션 을 설정하는 것입니다. 예를 들어 :setlocal syntax=python.fstrings
는 먼저로드 syntax/python.vim
한 다음 syntax/fstrings.vim
. 이것은 다소 일반적이고 여러 개별 언어에 대해 이해할 수있는 구문이있는 경우에 더 유용 할 것입니다 (예 : 주석 내부의 문서 형식에 대한 일부 구문 강조?)이 경우에는 그다지 적용되지 않는 것 같습니다. , 여기서 f- 문자열은 본질적으로 Python 구문입니다. 'syntax'
설정과 별도로 설정을 유지하는 'filetype'
것도 까다로울 수 있으며, 기본 설정으로 인해 방해받지 않도록 올바른 위치 (너무 일찍 또는 너무 늦지 않음)에 설정해야합니다.
로드되지 않는 스크립트 문제를 해결하는 동안 :scriptnames명령을 사용 하여 *.vim
스크립트가 실제로 Vim에 의해 어느 시점에서로드 되었는지 확인할 수 있습니다 . 특정 파일 유형의 파일을 열기 전과 후에이를 반복하여 해당 파일 유형 감지에 의해 트리거되었는지 확인합니다.