是否可以针对不同的文件类型使用特定的 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
。我知道如何在我的常规配置文件中执行此操作,但是有没有办法只将该配置应用于这些特定的文件扩展名?
您的命令必须是本地缓冲区。 IE。 setlocal
而不是 set
; nnoremap <buffer> ...
而不是简单的 nnoremap ...
etc.etc.
您的命令必须 运行 一次,同时该特定缓冲区处于活动状态。最干净的方法是遵守ftplugin
。也就是说,将您的命令放入 ~/.vim/after/ftplugin/[filetype].vim
。例如,
~/.vim/after/ftplugin/markdown.vim
setlocal wrap
nnoremap <buffer>j gj
nnoremap <buffer>k gk
我目前正在使用 (Neo)vim 来处理多种不同的文件类型。我有一个整体 init.vim 适用于所有文件,但对于某些文件,如 MarkDown (.md) 和 LaTeX,我想添加一些其他重新映射。例如,我想设置 Neovim 在每个 .!? 之后在撤消树中记录一个新事件,方法是使用 .但是,我只想将其应用于我的 Markdown 和 LaTeX 文件。同样,我希望我的 .md 文件启用选项 set wrap
并将 j
重新映射到 gj
并将 k
重新映射到 gk
。我知道如何在我的常规配置文件中执行此操作,但是有没有办法只将该配置应用于这些特定的文件扩展名?
您的命令必须是本地缓冲区。 IE。
setlocal
而不是set
;nnoremap <buffer> ...
而不是简单的nnoremap ...
etc.etc.您的命令必须 运行 一次,同时该特定缓冲区处于活动状态。最干净的方法是遵守
ftplugin
。也就是说,将您的命令放入~/.vim/after/ftplugin/[filetype].vim
。例如,
~/.vim/after/ftplugin/markdown.vim
setlocal wrap
nnoremap <buffer>j gj
nnoremap <buffer>k gk