Vim 有没有更好的方法根据文件类型映射命令调用
在从记事本和记事本++切换到vim之后,我是一个新手,但在过去的四个月里,我一直只使用它。在my.vimrc中,我有一个根据文件扩展名自动更改命令调用的命令。例如,如果我正在编辑一个R文件,我可以按Vim 有没有更好的方法根据文件类型映射命令调用,vim,Vim,在从记事本和记事本++切换到vim之后,我是一个新手,但在过去的四个月里,我一直只使用它。在my.vimrc中,我有一个根据文件扩展名自动更改命令调用的命令。例如,如果我正在编辑一个R文件,我可以按,vim执行!Rscript%:p,但如果我切换到python文件并按,vim将执行!python%:p。我通过将以下内容放入.vimrc中来实现这一点: autocmd BufRead *.R noremap <F5> :!Rscript %:p<cr> au
,vim执行!Rscript%:p
,但如果我切换到python文件并按
,vim将执行!python%:p
。我通过将以下内容放入.vimrc中来实现这一点:
autocmd BufRead *.R noremap <F5> :!Rscript %:p<cr>
autocmd BufRead *.pl noremap <F5> :!perl %:p<cr>
autocmd BufRead *.py noremap <F5> :!python %:p<cr>
autocmd BufRead*.R noremap:!Rscript%:p
autocmd BufRead*.pl noremap:!perl%:p
autocmd BufRead*.py noremap:!python%:p
我想知道这是否是vim基于命令调用执行它的“正确”方式。我知道我使用的一些python文件没有*.py扩展名,因此在这种情况下设置是无用的 如果您有
BufRead*.py
,则只有在加载*.py
缓冲区/文件时才会触发自动命令
vim具有文件类型检测机制
Vim可以检测编辑的文件类型。这是由
检查文件名,有时检查
特定文本的文件
您应该打开:文件类型
并在autocmd中使用
文件类型事件。您需要做两件事:
- 使用
noremap
的
选项创建本地到特定缓冲区的映射
- 仅加载特定文件类型的映射
这可以通过.vimrc
中的autocmd
和FileType
事件来完成,如下所示:
autocmd FileType perl noremap <buffer> <F5> :!perl %:p<cr>
我个人更倾向于ftplugin方法,但是在.vimrc
文件中有一个万事俱备的插件会很好
有关更多帮助,请参阅:
:h :au
:h FileType
:h map-local
:h ftplugin
可能的重复项:
:h :au
:h FileType
:h map-local
:h ftplugin