win7下基于Vim的代码编辑器
admin 于 2017年08月13日 发表在 windows软件开发

1. vim下载

win7-vim下载(http://www.vim.org/download.php#pc)或者直接下载gvim80版本(ftp://ftp.vim.org/pub/vim/pc/gvim80-586.exe

2. vim安装 

双击安装,安装目录,D:\Vim,安装完成后看到内容,如下:

注意:为防止安装后无法解析,强烈建议路径中不要出现空格,如:Program Files等。

以下是安装方法,如果想直接使用作者配置好的文件,直接看步骤4。

3. 安装几个插件

(1) ctags下载(地址:https://sourceforge.net/projects/ctags/),将解压后的ctags58文件夹复制到 ...\Vim\vimfiles 目录下(事实上,只需要ctags.exe)。

(2) 最精简安装,只安装三个提高效的插件:neocomplcache.vim 、NERD_tree.vim、taglist.vim。

(3) 搜索以上三个插件,官网(http://www.vim.org/)中直接下载,并解压到 ...\Vim\vimfiles 目录下便可。

(4) 配置 ...\Vim 下的 _vimrc 文件,具体内容见附件。

为了快捷安装,可以下载作者已经配置的文件(点击下载附件),并直接解压到 ...\Vim 目录下,目录下内容如:

4. 最终效果

附配置文件(_vimrc):

set nocompatible         	" 关闭 vi 兼容模式
syntax on                   " 自动语法高亮
colorscheme  desert        	" 设定配色方案
set noeb            		" 去掉输入错误的提示声音
set confirm					" 在处理未保存或只读文件的时候,弹出确认
set autoindent				" 自动缩进
set cindent
set guifont=Consolas:h11:cANSI
set wrap					" 自动换行
set linebreak				" 整词换行
set number                  " 显示行号
"set cursorline             " 突出显示当前行
set ruler                   " 打开状态栏标尺
set shiftwidth=4            " 设定 << 和 >> 命令移动时的宽度为 4
set softtabstop=4           " 使得按退格键时可以一次删掉 4 个空格
set tabstop=4               " 设定 tab 长度为 4
set history=1000			" 历史记录数
set ignorecase				" 搜索忽略大小写
set noexpandtab				" 不要用空格代替制表符
set nobackup                " 覆盖文件时不备份
set autochdir               " 自动切换当前目录为当前文件所在的目录
set backupcopy=yes          " 设置备份时的行为为覆盖
set ignorecase smartcase    " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
set nowrapscan              " 禁止在搜索到文件两端时重新搜索
set wildmenu				" 增强模式中的命令行自动完成操作
set whichwrap+=<,>,h,l 		" 允许backspace和光标键跨越行边界
set iskeyword+=_,$,@,%,#,-	" 带有如下符号的单词不要被换行分割
set incsearch               " 输入搜索内容时就显示搜索结果
set hlsearch				" 搜索逐字符高亮
set incsearch
set noerrorbells            " 关闭错误信息响铃
set novisualbell            " 关闭使用可视响铃代替呼叫
set t_vb=                   " 置空错误铃声的终端代码
set showmatch               " 插入括号时,短暂地跳转到匹配的对应括号
set matchtime=2             " 短暂跳转到匹配括号的时间
set magic                   " 设置魔术
set hidden                  " 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
set smartindent             " 开启新行时使用智能自动缩进
set report=0				" 通过使用: commands命令,告诉我们文件的哪一行被改变过
set shortmess=atI  			" 启动的时候不显示那个援助索马里儿童的提示
set fillchars=vert:\ ,stl:\ ,stlnc:\	" 在被分割的窗口间显示空白,便于阅读
set backspace=indent,eol,start
                            " 不设定在插入状态无法用退格键和Delete 键删除回车符
set cmdheight=1             " 设定命令行的行数为 1
set foldenable              " 开始折叠
set mouse=a		"使用鼠标
set foldmethod=syntax       " 设置语法折叠
filetype plugin indent on   " 开启插件
filetype on					" 侦测文件类型
set foldcolumn=1           	" 设置折叠区域的宽度
setlocal foldlevel=1        " 设置折叠层数为           

set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\[POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
let helptags=$VIMRUNTIME.'/doc'

"解决windows下UTF-8中文乱码
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")
set fileencoding=chinese
else
set fileencoding=utf-8
endif

"解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

"解决consle输出乱码
language messages zh_CN.utf-8

"新建.c,.h,.sh,.java文件,自动插入文件头 
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.rb,*.java,*.py exec ":call SetTitle()" 
"定义函数SetTitle,自动插入文件头 
func SetTitle() 
        call setline(1, "/********************************************************************") 
        call append(line("."), "	> File Name: ".expand("%")) 
        call append(line(".")+1, "	> Author: JasonLu ") 
        call append(line(".")+2, "	> Mail: 1020756702@qq.com") 
        call append(line(".")+3, "	> Created Time: ".strftime("%c")) 
        call append(line(".")+4, " *******************************************************************/") 
        call append(line(".")+5, "")
    if expand("%:e") == 'cpp'
        call append(line(".")+6, "#include<iostream>")
        call append(line(".")+7, "using namespace std;")
        call append(line(".")+8, "")
    endif
    if &filetype == 'c'
        call append(line(".")+6, "#include<stdio.h>")
        call append(line(".")+7, "")
    endif
    if expand("%:e") == 'h'
        call append(line(".")+6, "#ifndef _".toupper(expand("%:r"))."_H")
        call append(line(".")+7, "#define _".toupper(expand("%:r"))."_H")
        call append(line(".")+8, "#endif")
    endif
    if &filetype == 'java'
        call append(line(".")+6,"public class ".expand("%:r"))
        call append(line(".")+7,"")
    endif
    "新建文件后,自动定位到文件末尾
endfunc 
autocmd BufNewFile * normal G

"C,C++ 按F5编译运行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
    exec "w"
    if &filetype == 'c'
        exec "!g++ % -o %<"
        exec "!time ./%<"
    elseif &filetype == 'cpp'
        exec "!g++ % -o %<"
        exec "!time ./%<"
    elseif &filetype == 'java' 
        exec "!javac %" 
        exec "!time java %<"
    endif
endfunc

 "-----------------------------------------------------------------
 " plugin - taglist.vim  查看函数列表,需要ctags程序
 " F3打开隐藏taglist窗口
 "-----------------------------------------------------------------
 nmap <F3> :TlistToggle<CR>
 let Tlist_Ctags_Cmd = 'D:\Vim\vimfiles\ctags58\ctags.exe'
 let Tlist_Show_One_File = 1            " 不同时显示多个文件的tag,只显示当前文件的
 let Tlist_Exit_OnlyWindow = 1          " 如果taglist窗口是最后一个窗口,则退出vim
 let Tlist_Use_Right_Window = 1         " 在右侧窗口中显示taglist窗口
 let Tlist_Auto_Open = 0
 let Tlist_Auto_Update = 1
 let Tlist_Hightlight_Tag_On_BufEnter = 1
 let Tlist_Enable_Fold_Column = 0
 let Tlist_Display_Prototype = 0
 let Tlist_WinWidth = 30

 " F2 NERDTree 切换
 nmap <F2> :NERDTreeToggle<CR>
 let g:NERDTreeWinPos = "left"
 let g:NERDTreeWinPos="left"
 let g:NERDTreeWinSize=25
 let g:NERDTreeShowLineNumbers=1

 "-----------------------------------------------------------------
" plugin - NeoComplCache.vim 自动补全插件
"-----------------------------------------------------------------
let g:neocomplcache_enable_at_startup = 1

注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。

标签:vim,Win7,C/C++