🏮

VimでMarkdownファイル中の`_`がエラーハイライトされてしまう問題の対処

2021/12/06に公開

VimでMarkdownファイルを編集しているとき、_が意図せずエラーハイライトされてしまう問題に遭遇しました。


ハイライトの表示は設定によります

Markdownのシンタックス設定で、単語中に_が含まれている場合が指定されていることが原因です。
syntax/markdown.vimにて確認できます。

path-to-nvim/runtime/syntax/markdown.vim 抜粋
syn match markdownError "\w\@<=_\w\@="

_がMarkdownの記法として動作するにはスペースに接していることが必要なので、構文エラーとして認識したいこともあるかもしれません。
しかし、URLや単語に含まれているものもエラー表示されてしまうので、筆者のユースケースではこの指定は不要に感じられました。

対処

autocmdで設定を更新しましょう。

.vimrc or init.vim
augroup update_markdown_syntax
  autocmd!
  autocmd BufNew,BufEnter * if &filetype == 'markdown' | syntax match markdownError '\w\@<=\w\@=' | endif
augroup END

追記:FileTypeイベントで書いていたがそれだと正しく発火しなかったので修正

これで単語中の_がエラーから除外されます。

参考

https://stackoverflow.com/questions/19137601/turn-off-highlighting-a-certain-pattern-in-vim

Discussion