2010-09-17 3 views
11

Я хочу вызвать команду при сохранении файла. Теперь я вызываю его :make, но я бы хотел, чтобы он мог быть вызван при выполнении :w и :wq.Vim save, а затем автоматически?

Я также хочу включить эту функцию в любой подпапке, которая не содержит Makefile, но ее родители содержат ее. Так же, как эта тема говорит, но это не работает для меня:

How to efficiently "make" with Vim

+0

http://stackoverflow.com/questions/729249/how-to-efficiently-make-with-vim –

ответ

12
 
:autocmd BufWritePost <buffer> make 
+0

«Сделать» как команда оболочки или его команда vim? может ли это быть функцией vim? –

+0

': make' - это команда vim, которая запускает команду' make' shell и считывает ее вывод, чтобы убедиться, что все работает. –

+0

Если вы хотите сохранить иногда без автокоманды, добавьте команду 'noautocmd'. например: 'noautocmd wq'. Вы можете сопоставить ключ для сохранения и закрытия, например, F4, отредактировав vimrc с помощью 'vim ~/.vimrc', а затем добавить строку:' map : noautocmd wq '. Я также добавил ключ F3 для сохранения и создания, добавив в vimrc: 'map : w ' – Jason

4
au BufWritePost  *.c 
      \ make 
+0

Стоит отметить, что это происходит в ~/.vimrc. –

+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