怎么让vim提示保存在编译之前?

Vim、Emacs配置和使用
回复
ufo22940268
帖子: 1
注册时间: 2011-12-04 16:27

怎么让vim提示保存在编译之前?

#1

帖子 ufo22940268 » 2011-12-20 17:27

我用

代码: 全选

:make
来进行编译。但是每次输入这个命令的时候总是害怕自己代码没有保存,所以有什么办法让vim提示保存代码在我没有保存的情况下?如果没有办法做到,你们是怎么解决这个问题的呢?
sarrow
帖子: 403
注册时间: 2007-10-27 1:04

Re: 怎么让vim提示保存在编译之前?

#2

帖子 sarrow » 2011-12-20 18:18

作一个wrapper。

一个nnoremap或者command 来调用这个wrapper函数。

我是noremap ;rm :call RunMake()<CR>
这样的。

然后RunMake()内部进行update(或者 wall看,你的需要了)。同时检测有没有叫MakeFile的文件存在。没有就创建。有的话,就直接
:make<CR>
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 怎么让vim提示保存在编译之前?

#3

帖子 lilydjwg » 2011-12-20 18:57

sarrow 写了: 然后RunMake()内部进行update(或者 wall看,你的需要了)。同时检测有没有叫MakeFile的文件存在。没有就创建。有的话,就直接
:make<CR>
没有 Makefile 也是可以 make 的哦。
sarrow
帖子: 403
注册时间: 2007-10-27 1:04

Re: 怎么让vim提示保存在编译之前?

#4

帖子 sarrow » 2011-12-20 19:18

没有 Makefile 也是可以 make 的哦。
真神奇!应该把“Makefile”替换成love。

不过,没有Makefile文件,而使用make,需要提供目标,不然,make不知道你要make什么,
也许你的目标真的是“love”。

:em05 :em05

----------------------------------------------------------------------

我自己作了一个makefile文件的自动生成机制。你只需要提供makefile文件的名字——可以
是Makefile,也可以是xxx.mak。等等。

然后,你再选择一个模板,该脚本会自动进行替换——比如,以当前文件夹的名字,作为可
执行文件的名字——这一般就是最终的目标了,比如叫love。

而模板里面,第一个目标all就依赖于love:

all: love

然后:

love: $(OBJs)

....

使用的时候,单独的make就编译release版本;make debug就编译debug版本。

对我自己写的程序来说,make的接口都是一样的——虽然生成的目标可以不一样。
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 怎么让vim提示保存在编译之前?

#5

帖子 fanhe » 2011-12-22 13:44

你新建个文件,叫 love.c
然后写些代码

然后

代码: 全选

make love
就能生成名叫 love 的文件,我没开玩笑 :em09
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 怎么让vim提示保存在编译之前?

#6

帖子 fanhe » 2011-12-22 13:46

试试

代码: 全选

fan@fan-desktop:~/Desktop/VimLite/VIMClangCC$ cat > love.c << EOF
> #include <stdio.h>
> main(){printf("making love\n");}
> EOF
fan@fan-desktop:~/Desktop/VimLite/VIMClangCC$ make love
cc     love.c   -o love
fan@fan-desktop:~/Desktop/VimLite/VIMClangCC$ ./love 
making love
fan@fan-desktop:~/Desktop/VimLite/VIMClangCC$ 
xvii
帖子: 54
注册时间: 2008-03-12 14:33

Re: 怎么让vim提示保存在编译之前?

#7

帖子 xvii » 2011-12-25 0:01

从网上找的配置:

代码: 全选

"" compile {{{
" 编译和运行 c/cpp 程序,在 windows 下使用会报错,需要去掉 ./ 这两个字符。
if has("unix")
	" C
	map <C-F5> :call CompileRunGcc()<CR>
	func! CompileRunGcc()
		exec "w"
		exec "!gcc % -o %<"
		exec "! ./%<"
	endfunc
	" C++
	map <C-F6> :call CompileRunGpp()<CR>
	func! CompileRunGpp()
		exec "w"
		exec "!g++ % -o %<"
		exec "! ./%<"
	endfunc
endif
" }}}
要改一下,把gcc改成make,具体没实现过。
操作系统:Linux erocpil 2.6.38-gentoo-r6 #2 SMP Sun Sep 11 10:15:16 GMT 2011 x86_64 Intel(R) Core(TM)2 CPU T5200 @ 1.60GHz GenuineIntel GNU/Linux
编程语言:C/C++,Perl。
谷歌代码:manshow-重新编译的win32版本Vim,加入诸多特性:非等宽中文字体(如微软雅黑),脚本语言接口(如Perl,Python,Lua),透明效果等。
个人主页:http://lyx.us.tc/
回复