从 Notepad 和 Notepad++ 切换到 vim 后,我才开始接触 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>
我想知道这是否是基于命令调用执行它的“正确”vim 方式。我知道我使用的一些 python 文件没有 *.py 扩展名,因此该设置在这种情况下毫无用处。
你需要做两件事:
- 使用以下命令创建特定缓冲区的本地映射
<buffer>
选项noremap
.
- 仅加载特定文件类型的映射。
这可以通过autocmd
and FileType
事件在你的.vimrc
像这样:
autocmd FileType perl noremap <buffer> <F5> :!perl %:p<cr>
另一种方法是创建文件类型插件。 (看:h ftplugin
更多细节)
一个简单的例子是创建一个名为的文件,~/.vim/ftplugin/perl.vim
并将您的映射放入其中,如下所示:
nnoremap <buffer> <F5> :!perl %:p<cr>
我个人更倾向于 ftplugin 方法,但你的一切都在.vimrc
文件可以很好。
如需更多帮助,请参阅:
:h :au
:h FileType
:h map-local
:h ftplugin
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)