如果文件是.rb扩展名,我按F5时我想在VIM中执行rubyf操作.现在我就是
map <F5> :rubyf % <CR>.
Run Code Online (Sandbox Code Playgroud)
但我也想解释方案文件,如果它的.scm或编译tex等使用相同的F5.如何检查文件扩展名并执行正确的绑定?你们如何在G/VIM中编译不同的文件?
Lau*_*ves 12
您可以为每个文件扩展名创建不同的autocmd.例如:
au BufEnter,BufNew *.rb map <F5> :rubyf % <CR>.
Run Code Online (Sandbox Code Playgroud)
:help autocmd有关autocmds的信息,请参阅.
针对特定问题的更好方法是映射<F5>到始终调用:make %,然后使用autocmd makeprg为每种文件类型设置选项(setlocal在执行此操作时使用以获得最佳结果).这不是用于将ruby加载到Vim中(正如您似乎正在做的那样),而是用于调用外部编译器/解释器/ linter.这基本上就是我的工作.这样做的好处是Vim可以解释错误和警告并自动跳转到代码中的问题.您还可以显示错误/警告列表.请参阅:help quickfix有关此信息,以及为帮助主题'makeprg',:make,:copen和'errorformat'.
稍微有点不同就是根本不使用autocmds,而是要有一个外部脚本,当给定源文件名时会计算出要运行的内容(ruby,你的方案编译器,pychecker,你的C编译器,等等).然后设置makeprg为始终运行该脚本.
使用filetype插件。
创建文件~/.vim/ftplugin/ruby/custom.vim
仅当当前缓冲区的文件类型为 ruby 时,才在该文件中放置您想要包含的任何命令。他们将得到适当的采购。
如果您想从方案中执行相同的操作,请创建另一个文件 ~/.vim/ftplugin/scheme/custom.vim`` 并执行相同的操作。
每次在 vim 中加载文件时,它都会检测文件类型,并加载与您的文件类型对应的所有插件。