Vim自动保存并编译?

16

我希望在保存文件时能够自动调用一个命令。 现在我需要手动执行:make,但我希望它能够在我执行:w:wq时自动调用。

我还希望在任何没有Makefile文件的子文件夹中启用此功能,但其父文件夹中包含Makefile文件。就像这个主题所说的那样,但对我却不起作用:

如何高效地“制作”Vim


https://dev59.com/rnRB5IYBdhLWcg3wET1J - guilin 桂林
3个回答

19
自动执行命令:在保存当前缓冲区后运行"make"命令。

“make” 是一个 shell 命令还是 vim 命令?它可以作为一个 vim 函数吗? - guilin 桂林
:make 是一个 vim 命令,它运行 make shell 命令并读取其输出以确保一切正常。 - too much php
1
如果您想在没有自动命令的情况下保存,请在前面加上“noautocmd”。例如:noautocmd wq。您可以通过编辑vimrc将键映射到保存和关闭,例如F4,使用“vim〜/ .vimrc”,然后添加以下行:map <F4> :noautocmd wq <CR>。我还通过添加到vimrc来添加了一个F3键以保存和制作:map <F3> :w<CR> - Jason

5
au BufWritePost        *.c
            \ make

1
@Pablo - 实际上,它应该放在 ~/.vim/filetype.vim 中。 - amphetamachine

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接