从Notepad和Notepad ++切换后我是vim的新手,但过去四个月我一直在使用它.在我的.vimrc中,我有一个命令可以根据文件扩展名自动更改命令调用.例如,如果我正在编辑R文件,我可以按下<F5>并执行vim !Rscript %:p<cr>,但是如果我切换到python文件并按下<F5>,则vim执行!python %:p<cr>.我通过在我的.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>
Run Code Online (Sandbox Code Playgroud)
我想知道这是否是基于命令调用执行它的"正确的"vim方式.我知道我使用的一些python文件没有*.py扩展名,所以在这种情况下设置是无用的.
你需要做两件事:
<buffer>选项for 创建特定缓冲区的本地映射noremap.这可以通过你喜欢的事件autocmd和FileType事件来完成.vimrc:
autocmd FileType perl noremap <buffer> <F5> :!perl %:p<cr>
Run Code Online (Sandbox Code Playgroud)
另一种方法是通过创建文件类型插件.(:h ftplugin详情请见)
一个简单的例子是创建一个名为的文件,~/.vim/ftplugin/perl.vim并将映射放在里面:
nnoremap <buffer> <F5> :!perl %:p<cr>
Run Code Online (Sandbox Code Playgroud)
我个人更倾向于ftplugin方法,但在.vimrc文件中包含所有内容都可以.
有关更多帮助请参阅:
:h :au
:h FileType
:h map-local
:h ftplugin
Run Code Online (Sandbox Code Playgroud)