我从记事本和Notepad ++切换后对vim不熟悉,但过去四个月我一直在使用它。在我的.vimrc中,我有一个命令可以根据文件扩展名自动更改命令调用。例如,如果我正在编辑R文件,我可以按<F5>
并且vim执行!Rscript %:p<cr>
,但如果我切换到python文件并按<F5>
,则vim执行{{1} }}。我通过将以下内容放在我的.vimrc中来实现这一点:
!python %:p<cr>
我想知道这是否是基于命令调用执行它的“正确”的vim方式。我知道我使用的一些python文件没有* .py扩展名,所以在这种情况下设置是无用的。
答案 0 :(得分:5)
你需要做两件事:
<buffer>
的{{1}}选项创建特定缓冲区的本地映射。这可以通过noremap
中的autocmd
和FileType
事件完成,如下所示:
.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
事件。