windows下gvim与gcc的一键环境的搭建
2015-07-15 17:01
330 查看
此处略去在windows中配置gcc的方法。默认你已经能够在命令提示符下直接使用gcc了。
其实就是写了一个vimscript的.vim文件,然后在 _vimrc 中使用source命令引用进来。
以下是源代码(OneKeyMake.vim)
----------------------------------------------------------------------------
"这是一个一键执行c或cpp的脚本,用source引入到vimrc即可
"源文件的路径中有空格也没关系
"在插入模式或者normal模式时使用F5一键运行(不自动保存)
"使用Ctrl+F5运行,运行会自动使用:w保存文件
nmap<C-F5> :w<CR>:call Do_OneKeyMake()<CR>
imap<C-F5> <Esc>:w<CR>:call Do_OneKeyMake()<CR>
nmap<F5> :call Do_OneKeyMake()<CR>
imap<F5> <Esc>:call Do_OneKeyMake()<CR>
function Do_OneKeyMake()
let sF=expand('%:p')
let oF=expand('%:p:h').'\a.exe'
let fE=expand('%:e')
"echo oF
"echo filereadable(sF)
if fE!='cpp' && fE!='c'
echohl WarningMsg | echo '文件扩展名必须是 cpp 或者 c' | echohl None
return
endif
if filereadable(oF)
if delete(oF)
echohl WarningMsg | echo '无法删除之前生成的可执行文件,可能是没有权限' | echohl None
return
endif
endif
let cmd='cls & g++ -static -Wall "'.sF.'" -o "'.oF.'" && "'.oF.'" &pause'
silent execute 'normal :'
silent execute '!'.cmd
if !filereadable(oF)
echohl WarningMsg | echo '没有生成新的可执行文件,可能编译失败,或者没有权限' | echohl None
return
endif
"本来把编译和运行放到不同窗口的,但是那样可能会有多余的操作
"下面的命令用于产生执行时的窗口,现已注释掉
"let cmd='cls & "'.oF.'" &pause'
"silent execute 'normal :'
"silent execute '!'.cmd
endfunction
----------------------------------------------------------------------------
顺便备份一下我用的样式(mystyle.vim)
"用于个人的一些个性化设定
set number
set tabstop=4
set autoindent
colo slate
set guifont=Consolas\ 12
set fileencodings=utf-8,cp936
"把F3映射成自动调整编码,实际没啥用
nmap<F3> :call ChangeEncoding()<CR>
function ChangeEncoding()
let encodings=['utf-8','cp936']
let w:myEncoding=exists('w:myEncoding')?(w:myEncoding+1):0
let w:myEncoding=(w:myEncoding>=len(encodings))?0:(w:myEncoding)
let &encoding=encodings[w:myEncoding]
endfunction
----------------------------------------------------------------------------
ps:尝试过gvim打开大文件的速度,发现其表现不如notepad++
其实就是写了一个vimscript的.vim文件,然后在 _vimrc 中使用source命令引用进来。
以下是源代码(OneKeyMake.vim)
----------------------------------------------------------------------------
"这是一个一键执行c或cpp的脚本,用source引入到vimrc即可
"源文件的路径中有空格也没关系
"在插入模式或者normal模式时使用F5一键运行(不自动保存)
"使用Ctrl+F5运行,运行会自动使用:w保存文件
nmap<C-F5> :w<CR>:call Do_OneKeyMake()<CR>
imap<C-F5> <Esc>:w<CR>:call Do_OneKeyMake()<CR>
nmap<F5> :call Do_OneKeyMake()<CR>
imap<F5> <Esc>:call Do_OneKeyMake()<CR>
function Do_OneKeyMake()
let sF=expand('%:p')
let oF=expand('%:p:h').'\a.exe'
let fE=expand('%:e')
"echo oF
"echo filereadable(sF)
if fE!='cpp' && fE!='c'
echohl WarningMsg | echo '文件扩展名必须是 cpp 或者 c' | echohl None
return
endif
if filereadable(oF)
if delete(oF)
echohl WarningMsg | echo '无法删除之前生成的可执行文件,可能是没有权限' | echohl None
return
endif
endif
let cmd='cls & g++ -static -Wall "'.sF.'" -o "'.oF.'" && "'.oF.'" &pause'
silent execute 'normal :'
silent execute '!'.cmd
if !filereadable(oF)
echohl WarningMsg | echo '没有生成新的可执行文件,可能编译失败,或者没有权限' | echohl None
return
endif
"本来把编译和运行放到不同窗口的,但是那样可能会有多余的操作
"下面的命令用于产生执行时的窗口,现已注释掉
"let cmd='cls & "'.oF.'" &pause'
"silent execute 'normal :'
"silent execute '!'.cmd
endfunction
----------------------------------------------------------------------------
顺便备份一下我用的样式(mystyle.vim)
"用于个人的一些个性化设定
set number
set tabstop=4
set autoindent
colo slate
set guifont=Consolas\ 12
set fileencodings=utf-8,cp936
"把F3映射成自动调整编码,实际没啥用
nmap<F3> :call ChangeEncoding()<CR>
function ChangeEncoding()
let encodings=['utf-8','cp936']
let w:myEncoding=exists('w:myEncoding')?(w:myEncoding+1):0
let w:myEncoding=(w:myEncoding>=len(encodings))?0:(w:myEncoding)
let &encoding=encodings[w:myEncoding]
endfunction
----------------------------------------------------------------------------
ps:尝试过gvim打开大文件的速度,发现其表现不如notepad++
相关文章推荐
- 多个线程之间共享数据的方式(卖票问题,存取款问题)
- 一张图了解所有USB接口和线序
- 算法的时间复杂度计算
- 解决struts2过滤器冲突的简单方法
- ZOJ 1002 FZU 1098 HDU 1045 Fire Net
- 【sqlserver】记录
- 分享:面相对象的建模(封装业务层)
- dll劫持技术
- redis学习-5种数据类型和相关命令
- 联合体的巧用
- 利用反射机制访问类中的私有方法
- 多个线程之间共享数据的方式(卖票问题,存取款问题)
- C#实现按数据库邮件列表发送邮件的方法
- 友盟集成
- CSS中使用Flexbox来达到居中效果的实例
- Log4j日志级别
- 学习c++的五十条忠告
- iOS中 imageNamed方法 很多图片占用大量内存问题
- MySQL Cluster Windows 安装
- asp.net调用JAVA的webservice时注意