2010-09-17 34 views
11

Tôi muốn gọi một lệnh khi tôi lưu tệp. Tôi đang gọi nó bằng :make theo cách thủ công ngay bây giờ, nhưng tôi ước nó có thể được gọi khi tôi thực hiện :w:wq.Vim lưu sau đó tự động thực hiện?

Tôi cũng muốn bật tính năng này trong bất kỳ thư mục con nào không chứa Makefile nhưng bố mẹ của nó chứa một. Cũng giống như chủ đề này cho biết, nhưng nó không làm việc cho tôi:

How to efficiently "make" with Vim

+0

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

Trả lời

12
 
:autocmd BufWritePost <buffer> make 
+0

"make" là như một lệnh shell hoặc một vim lệnh? nó có thể là một chức năng vim? –

+0

': make' là lệnh vim chạy lệnh' make' shell và đọc đầu ra của nó để đảm bảo mọi thứ hoạt động. –

+0

Nếu bạn muốn lưu đôi khi không có tính năng tự động, hãy thêm vào trước với 'noautocmd'. ví dụ: 'noautocmd wq'. Bạn có thể ánh xạ khóa để lưu và đóng, chẳng hạn như F4 bằng cách chỉnh sửa vimrc bằng 'vim ~/.vimrc', sau đó thêm dòng:' map : noautocmd wq '. Tôi cũng đã thêm một phím F3 để lưu và thực hiện bằng cách thêm vào vimrc: 'map : w ' – Jason

4
au BufWritePost  *.c 
      \ make 
+0

Thật đáng để chỉ ra rằng điều này nằm trong ~/.vimrc. –

+1

@Pablo - Thực ra, nó nằm trong '~/.vim/filetype.vim'. – amphetamachine

0

Đây là một câu hỏi cũ, nhưng tôi nghĩ rằng tôi nên chia sẻ này. Ở đây đi công thức của tôi, hoạt động khá tốt:

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 
Các vấn đề liên quan