🦁
Neovimのファイルタイプ検出は自分で微調整できるよ
この記事はVim駅伝の2025-10-17の記事です。
前回の記事はtaketsさんのごめん、カーソル移動を効率的にするヘルシェイク矢野.vimのこと考えてたです。連打起動系の機能はmini.keymapでも実現できるかもしれませんね。
Vim駅伝は常に参加者を募集しています。詳しくはこちらのページをご覧ください。
この辺を読んで知りました。
Neovimはデフォルトでファイルタイプを検出してくれます。たとえばyamlファイルはyaml
のファイルタイプになります。vim.filetype.add
を使うとファイル名とファイルタイプの対応を自分で定義できるのですが、yaml.github-actions
のようなドット区切りのファイルタイプもつけることができます。
筆者はこんな感じで設定しています。
init.lua
vim.filetype.add({
pattern = {
['compose.*%.ya?ml'] = 'yaml.docker-compose',
['docker%-compose.*%.ya?ml'] = 'yaml.docker-compose',
['.*/%.github/workflows/.*%.ya?ml'] = 'yaml.github-actions',
['%.env.*'] = 'sh.env',
},
})
区切りの最初の部分はハイライトなどに使われるようで、yaml.github-actions
というファイルタイプでもyamlファイルのハイライトが適用されます。
このファイルタイプをlspの起動条件にすることで、「GitHub Actions用のyamlファイルでのみ起動」という設定を簡単に書くことができます。
nvim-config/after/lsp/gh_actions_ls.lua
return {
filetypes = { 'yaml.github-actions' },
}
なお、yaml.github-actions
に対してはfiletypes = { 'yaml' }
を条件とするlspはアタッチされません。ここは完全一致のようです。
これはlspだけでなくautocmd Filetypeにも関係します。「この設定ファイルを開いたときはNeovimに特別な反応をさせたいな」といった場合があれば、覚えておくと役立つかもしれません。
関連記事
Discussion