2010-09-17 94 views
11

我想在保存文件时调用命令。 我现在手动调用:make,但希望在执行:w:wq时调用它。Vim保存然后自动生成?

我也希望在任何不包含Makefile但其父母包含子文件夹的子文件夹中启用此功能。就像这个话题说,但它并没有为我工作:

How to efficiently "make" with Vim

+0

http://stackoverflow.com/questions/729249/how-to-efficiently-make-with-vim – 2010-09-17 05:56:13

回答

12
 
:autocmd BufWritePost <buffer> make 
+0

“make”这个是作为一个shell命令或vim命令?它可以是一个vim功能? – 2010-09-17 05:51:01

+0

':make'是执行'make' shell命令并读取其输出以确保一切正常工作的vim命令。 – 2010-09-17 07:11:19

+0

如果你想在没有自动命令的情况下保存,可以使用'noautocmd'。例如:'noautocmd wq'。您可以通过'vim〜/ .vimrc'编辑vimrc,然后添加一行:'map :noautocmd wq '来映射一个保存和关闭的密钥,例如F4。我还添加了一个F3键来保存并添加到vimrc中:'map :w ' – Jason 2017-03-31 17:49:10

4
au BufWritePost  *.c 
      \ make 
+0

值得指出的是这在〜/ .vimrc中。 – 2010-09-17 04:49:57

+1

@Pablo - 实际上,它出现在'〜/ .vim/filetype.vim'中。 – amphetamachine 2010-09-17 08:13:06

0

这是一个老问题,但我觉得我应该分享。这里不用我的食谱,效果很好:

let autocompiled_filetypes = [ 
     \ 'php' ] " 'ft2', 'ft3', 'etc' 
    au BufWritePost * call feedkeys("\<Esc>") 
     \ | if index(autocompiled_filetypes, &ft) >= 0 | 
     \ | silent! make % | cw | call feedkeys("\<Enter>") 
     \ | endif