有没有更好的方法来根据文件类型映射命令调用

时间:2013-09-17 09:50:14

标签: vim

我从记事本和Notepad ++切换后对vim不熟悉,但过去四个月我一直在使用它。在我的.vimrc中,我有一个命令可以根据文件扩展名自动更改命令调用。例如,如果我正在编辑R文件,我可以按<F5>并且vim执行!Rscript %:p<cr>,但如果我切换到python文件并按<F5>,则vim执行{{1} }}。我通过将以下内容放在我的.vimrc中来实现这一点:

!python %:p<cr>

我想知道这是否是基于命令调用执行它的“正确”的vim方式。我知道我使用的一些python文件没有* .py扩展名,所以在这种情况下设置是无用的。

2 个答案:

答案 0 :(得分:5)

你需要做两件事:

  • 使用<buffer>的{​​{1}}选项创建特定缓冲区的本地映射。
  • 仅为特定文件类型加载映射。

这可以通过noremap中的autocmdFileType事件完成,如下所示:

.vimrc

另一种方法是通过创建文件类型插件。 (有关详细信息,请参阅autocmd FileType perl noremap <buffer> <F5> :!perl %:p<cr>

一个简单的例子就是创建一个名为:h ftplugin的文件,并将映射放在里面:

~/.vim/ftplugin/perl.vim

我个人更倾向于使用ftplugin方法,但在nnoremap <buffer> <F5> :!perl %:p<cr> 文件中包含所有内容可能会很好。

如需更多帮助,请参阅:

.vimrc

答案 1 :(得分:0)

如果您有BufRead *.py,则只有在加载*.py缓冲区/文件时才会触发自动命令。

vim有文件类型检测机制。

  

Vim可以检测编辑的文件类型。这是通过   检查文件名,有时检查文件的内容   特定文字的文件。

你应该切换:filetype on

并在您的autocmd中使用FileType事件。