怎样设置VIM,让它和IDE一样,一键编译运行?

Vim、Emacs配置和使用
dddpppbox
帖子: 18
注册时间: 2006-02-05 5:11

怎样设置VIM,让它和IDE一样,一键编译运行?

#1

帖子 dddpppbox » 2006-02-05 6:01

我经常用 C++ 写一些不超过500行的小程序,(一般都重新起名)
在WINDOWS下,那些IDE,用鼠标一点运行,他就自动编译运行了,我感到非常方便,尤其对我这种一个程序要调试好多次的人,

在LINUX下,要写 makefile 或者敲 g++ abc.cpp ./a.out 之类,我感到很烦琐;
能不能通过设置一些什么,让VIM也一键 编译+运行?
请指教
头像
karron
帖子: 6226
注册时间: 2005-06-11 14:03
来自: 不明真相的群众
联系:

#2

帖子 karron » 2006-02-09 11:21

你输入:make试试?
:h make ,看帮助.
我的blog,关于技术,软件,linux,vim <---- 所有博客均被河蟹.
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

#3

帖子 roylez » 2006-02-09 21:59

写一个makefile,几行字而已
然后在.vimrc里面给make来一个map。
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
dddpppbox
帖子: 18
注册时间: 2006-02-05 5:11

#4

帖子 dddpppbox » 2006-02-10 22:28

我是一个菜鸟,你能给我举一个例子吗?(最好把运行程序也加进去,这样才省事)

我的意思就是这个通用的makefile 怎么写
(我还是用WINDOWS环境多一些)

我现在只会写这种makefile

abc.exe : 1234.cpp
g++ -g -o abc.exe 1234.cpp
不通用!
因为我是肯定会换.cpp的文件名的
dddpppbox
帖子: 18
注册时间: 2006-02-05 5:11

#5

帖子 dddpppbox » 2006-02-11 0:21

noremap <silent> <F4> ::w<CR>
noremap <silent> <F5> ::!make<CR>
noremap <silent> <F6> ::!a.exe<CR>

这是我写的.vimrc
运行一个程序需要三次键,还要一次一个makefile,感觉还是不爽
谁能给我介绍一个更懒的方法?
dddpppbox
帖子: 18
注册时间: 2006-02-05 5:11

#6

帖子 dddpppbox » 2006-02-11 0:53

set makeprg=g++\ -g\ %

noremap <silent> <F4> ::w<CR>
noremap <silent> <F5> ::!make<CR>
noremap <silent> <F6> ::!a.exe<CR>

在论坛各位牛人还有文档的帮助下,我闷出这么几句来,
现在不用写 makefile了,但要按三次键,感觉还是不完美...
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

#7

帖子 roylez » 2006-02-14 0:49

dddpppbox 写了:我是一个菜鸟,你能给我举一个例子吗?(最好把运行程序也加进去,这样才省事)

我的意思就是这个通用的makefile 怎么写
(我还是用WINDOWS环境多一些)

我现在只会写这种makefile

abc.exe : 1234.cpp
g++ -g -o abc.exe 1234.cpp
不通用!
因为我是肯定会换.cpp的文件名的
我也是个菜鸟……所以说得不好勿怪:)
我常用的是fortran,makefile大约这样写

代码: 全选

MD-Ni3Al: MD-Ni3Al.f90
        g95 -o $@ $^

input-data-Ni3Al.o: input-data-Ni3Al.f90
       g95 -c $< -o $@

clean:
        -rm *.o
        -rm *.mod
$@指的是冒号前面的文件名,$<指的是冒号后面的所有文件名,$^指冒号后的第一个文件名(这个记得不是太确定,每次都是copy来copy去的:P),这样改动起来的时候应该不是太麻烦。

至于key mapping,你可以把好几个命令放一块的。

代码: 全选

map <F2> <Esc>:w<CR>:make<CR>:!./a.exe<CR>
[/code]
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
dddpppbox
帖子: 18
注册时间: 2006-02-05 5:11

#8

帖子 dddpppbox » 2006-02-15 1:38

nkzealot客气了
感谢你的热心指点
以后还希望多多指教;
看到 zealot 感到很亲切
头像
runpin
帖子: 647
注册时间: 2005-09-29 11:13
来自: Boston, MA

这是我在.vimrc中的设置,一般用来编译小的C++源文件。

#9

帖子 runpin » 2006-02-26 12:51

代码: 全选

"GCC/G++ Compiler
map <F5> :call CompileRunGcc()<CR> 

func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<" 

endfunc

map <F6> :call CompileRunGplusplus()<CR>

func! CompileRunGcc()
exec "w"
exec "!g++ % -o %<"
exec "! ./%<"

endfunc
[/code]
tahaomei
帖子: 2
注册时间: 2006-07-02 17:01

Re: 怎样设置VIM,让它和IDE一样,一键编译运行?

#10

帖子 tahaomei » 2009-03-22 23:04

不错不错,做个标记。
头像
frogfrogfrog
帖子: 19
注册时间: 2008-07-13 23:19

Re: 怎样设置VIM,让它和IDE一样,一键编译运行?

#11

帖子 frogfrogfrog » 2009-03-22 23:10

MARK
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: 怎样设置VIM,让它和IDE一样,一键编译运行?

#12

帖子 wangdu2002 » 2009-03-22 23:15

好呀!顶之,不过Linux下也有IDE的,可以一键图形化编译,写小程序挺好!
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
头像
jznhljg
帖子: 36
注册时间: 2008-08-21 3:42

Re: 怎样设置VIM,让它和IDE一样,一键编译运行?

#13

帖子 jznhljg » 2009-03-31 15:40

MARK
sarrow
帖子: 403
注册时间: 2007-10-27 1:04

Re: 怎样设置VIM,让它和IDE一样,一键编译运行?

#14

帖子 sarrow » 2009-04-01 16:12

对但文件小应用程序,可安装C.vim插件;其默认的编译、执行快捷键是<Ctrl-F9>。

至于简单的通用makfile,可参考:

Target := A.out

Src := $(wildcard *.cpp)

Objs := $(patsubst %.cpp,%.o,$(Src))

CC := g++

FLAG ?= -O2 -Wall

Libs += $(Libs) -lm

.PHONY: all

all: $(Target)
./$(Target)

$(Target) : $(Objs)
$(CC) -o $@ $^ $(Libs)

$(Objs): %.o : %.cpp
$(CC) -o $@ -c $< $(FLAG)
头像
YZMSQ
帖子: 575
注册时间: 2009-06-01 10:48
来自: 杭州

Re: 怎样设置VIM,让它和IDE一样,一键编译运行?

#15

帖子 YZMSQ » 2010-04-06 19:13

哥告诉你一个网址:http://blog.csdn.net/wooin/archive/2007 ... 58917.aspx
有耐心的话,你会有不少收获的。 :em02
Linux/Unix命令行手册:Unix Toolbox
一位坛友推荐的学习Linux/Unix的好书:传送门
A life without passion resembles the shadow from a grave.
回复