如何在VIM中执行基于文件扩展名的操作?
如果文件扩展名为.rb,我想在按下F5时在VIM中执行rubyf操作。 现在我只有如何在VIM中执行基于文件扩展名的操作?,vim,Vim,如果文件扩展名为.rb,我想在按下F5时在VIM中执行rubyf操作。 现在我只有 map <F5> :rubyf % <CR>. map:rubyf%。 但是我还想解释scheme文件,如果它的.scm或compile tex等使用相同的F5。如何检查文件扩展名并执行正确的绑定?你们是如何在G/VIM中编译不同的文件的?的答案很好地回答了这个问题。您可以为每个文件扩展名创建不同的autocmd。例如: au BufEnter,BufNew *.rb map <
map <F5> :rubyf % <CR>.
map:rubyf%。
但是我还想解释scheme文件,如果它的.scm或compile tex等使用相同的F5。如何检查文件扩展名并执行正确的绑定?你们是如何在G/VIM中编译不同的文件的?的答案很好地回答了这个问题。您可以为每个文件扩展名创建不同的autocmd。例如:
au BufEnter,BufNew *.rb map <F5> :rubyf % <CR>.
au BufEnter,BufNew*.rb地图:rubyf%。
有关autocmd的信息,请参见:帮助autocmd
解决特定问题的更好方法是将
映射为始终调用:make%
,然后使用autocmd为每种文件类型设置makeprg
选项(为获得最佳结果,请使用setlocal
)。这不是为了将ruby加载到Vim中(正如您所做的那样),而是为了调用外部编译器/解释器/linter。这基本上就是我所做的。这样做的好处是Vim可以解释错误和警告,并自动跳转到代码中的问题。您还可以显示错误/警告列表。请参阅:help quickfix
,了解有关此问题的信息,以及'makeprg'
、:make
、:copen
和'errorformat'
的帮助主题
这方面的一个微小变化是根本不使用autocmds,而是使用一个外部脚本,当给定源文件名时,该脚本将确定要运行什么(ruby、scheme编译器、pychecker、C编译器等等)。然后只需将
makeprg
设置为始终运行该脚本。使用filetype
插件
创建一个文件~/.vim/ftplugin/ruby/custom.vim
在该文件中,仅当当前缓冲区的文件类型为ruby时,才放入希望包含的任何命令。它们将被适当地采购
如果要从scheme执行相同的操作,请创建另一个文件~/.vim/ftplugin/scheme/custom.vim``并执行相同的操作
每次在vim中加载文件时,它都会检测文件类型,并加载与文件类型对应的所有插件。自动命令是您的朋友
定义如下:
:au[tocmd][group]{event}{pat}[nested]{cmd}
在您的情况下,.vimrc中的以下行将执行您想要的操作。autocmd BufRead,BufNewFile*.rb映射F5:rubyf%CR.
有关更多信息,请参见se:这将需要:打开文件类型插件