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は起動時にパスをロードしたくないか、プラグインが使用されているために無視します。
/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構文です。1つとは'syntax'
別の設定を維持する'filetype'
ことも難しい場合があります。デフォルト設定で混乱しないように、適切な場所に設定する必要があります(早すぎたり遅すぎたりしないでください)。
スクリプトがロードされないというこのような問題のトラブルシューティング中に、:scriptnamesコマンドを使用して、*.vim
ある時点でスクリプトがVimによって実際にロードされたかどうかを確認できます。目的の特定のファイルタイプのファイルを開く前後にそれを繰り返して、そのファイルタイプの検出によってトリガーされたことを確認します。