是否可以针对不同的文件类型使用特定的 init.vim 命令?

Is it possible to have specific init.vim commands for different file types?

我目前正在使用 (Neo)vim 来处理多种不同的文件类型。我有一个整体 init.vim 适用于所有文件,但对于某些文件,如 MarkDown (.md) 和 LaTeX,我想添加一些其他重新映射。例如,我想设置 Neovim 在每个 .!? 之后在撤消树中记录一个新事件,方法是使用 .但是,我只想将其应用于我的 Markdown 和 LaTeX 文件。同样,我希望我的 .md 文件启用选项 set wrap 并将 j 重新映射到 gj 并将 k 重新映射到 gk。我知道如何在我的常规配置文件中执行此操作,但是有没有办法只将该配置应用于这些特定的文件扩展名?

  1. 您的命令必须是本地缓冲区。 IE。 setlocal 而不是 setnnoremap <buffer> ... 而不是简单的 nnoremap ... etc.etc.

  2. 您的命令必须 运行 一次,同时该特定缓冲区处于活动状态。最干净的方法是遵守ftplugin。也就是说,将您的命令放入 ~/.vim/after/ftplugin/[filetype].vim。例如,

~/.vim/after/ftplugin/markdown.vim

setlocal wrap
nnoremap <buffer>j gj
nnoremap <buffer>k gk