Vim-详细配置
- 格式:doc
- 大小:665.50 KB
- 文档页数:23
vim编辑器及环境变量配置vi是Linux系统⾃带的⽂本编辑器,vim编辑器可以⾼亮显⽰vim编辑器的⽤法普通模式,编辑模式,命令模式1. vim ⽂件名# 此时进⼊命令模式,你敲击键盘的动作都会被识别是⼀个vim的命令进⼊编辑模式命令i 在当前光标所在处插⼊⽂字I 在当前所在⾏的⾏⾸第⼀个⾮空格符处开始插⼊⽂字,和A相反A 在当前所在⾏的⾏尾最后⼀个字符处开始插⼊⽂字,和I相反O 在当前所在⾏的上⼀⾏处插⼊新的⼀⾏o 在当前所在⾏的下⼀⾏处插⼊新的⼀⾏2.但凡进⼊插⼊模式之后,敲击键盘的动作就会被识别为是普通的字符串了3.按下esc退出编辑模式之后,⼜进⼊命令模式了4.输⼊ :wq! 保存vim的写⼊内容,然后退出vim,结束操作在普通模式下,常⽤的指令$ 快速移动到⾏尾0 快速移动到光标的⾏⾸x 删除光标所在的字符gg 移动到⽂件的第⼀⾏G 移动到⽂件的最后⼀⾏5gg或5回车当前光标向下移动5⾏yy 复制光标当前⾏3yy 复制光标后3⾏p 打印yy所复制的内容dd 删除光标所在⾏4dd 删除光标向下的4⾏内容dG 删除光标当前⾏,到⾏尾的所有内容u 就是撤销上⼀次的动作命令模式下/string 从⽂件开头搜索,按n继续搜索,按N反向搜索string 从⽂件的第⾏,向上搜索字符串信息,按n继续搜索,按N反向搜索:%s/A/B/g,把A替换成B,如果A或B中有斜线,把分割的斜线换#或@s为替换,g全局替换:n1,n2s/A/B/g n1、n2为数字,在第n1⾏和n2⾏间寻找A,⽤B替换例⼦:全局替换,整个⽂件替换将nologin替换为boy:%s/nologin/boy/g例2:替换1-5⾏,将boy替换为nologin1,5s/boy/nologin/g#///为分隔符,可以⽤### @@@替代:wq!:q! 不保存退出:数字快速的定位到某⼀⾏:set nu 显⽰vim的⾏号:set nonu 取消显⽰⾏号修改linux的全局配置⽂件1.名字叫做 /etc/profile,⾥⾯是shell脚本语⾔2.编辑这个⽂件,写⼊你想永久⽣效的变量和值,系统每次开机都会读取这个⽂件,让其⽣效vim /etc/profile写⼊如下内容###这是⾃定义的变量,每次开机都能够读取了,第⼀条是设置系统中⽂的变量export LC_ALL=zh_CN.UTF-8 #打开注释,系统⽀持中⽂#export LC_ALL=en_US.UTF-8 #打开注释,系统就⽀持英⽂了linux单引号和双引号的区别单引号中的内容,仅仅就是个字符串了,不识别任何其他的特殊符号双引号中的内容,能够识别特殊符号,以及变量[root@linux ~]# echo '$name'$name[root@linux ~]# echo "$name"wmmPATH变量PATH就是定义⼀些常⽤的软件可执⾏命令的⽬录,放⼊系统中,可以快捷的查询,⽽不需要每次都输⼊绝对路径1.为什么系统能够直接找到python解释器?[root@linux tmp]# which python #输出命令所在的绝对路径/bin/python2.学习linux的PATH,[root@linux tmp]# echo $PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin注意,PATH的路径,是有先后顺序的,从左往右,读取的3.如果编译安装了⼀个python3,装在了 /opt/python36/⽬录下,怎么添加PATH?#这个变量赋值的代码,就是添加python3到环境变量中了PATH="/opt/python36/bin/:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:"4.由于上述变量赋值的操作,只是临时⽣效,我们想永久的更改PATH的值,还得修改/etc/profilevim /etc/profile #打开⽂件,在⽂件末尾,添加PATH值的修改PATH="/opt/python36/bin/:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:"。
vim配置⽂件.vimrc详解"是否兼容VI,compatible为兼容,nocompatible为不完全兼容"如果设置为compatible,则tab将不会变成空格set nocompatible"设置⿏标运⾏模式为WINDOWS模式behave mswin"设置菜单语⾔set encoding=chineseset langmenu=zh_CN.UTF-8" =========" 功能函数" =========" 获取当前⽬录func GetPWD()return substitute(getcwd(), "", "", "g")endf" =====================" 多语⾔环境" 默认为 UTF-8 编码" =====================if has("multi_byte")set encoding=utf-8" English messages only"language messages zh_CN.utf-8if has('win32')language englishlet &termencoding=&encodingendifset fencs=utf-8,gbk,chinese,latin1set formatoptions+=mMset nobomb " 不使⽤ Unicode 签名if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'set ambiwidth=doubleendifelseechoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"endif" =========" 环境配置" =========" 保留历史记录set history=400" 命令⾏于状态⾏set ch=1set stl=\ [File]\ %F%m%r%h%y[%{&fileformat},%{&fileencoding}]\ %w\ \ [PWD]\ %r%{GetPWD()}%h\ %=\ [Line]\ %l,%c\ %=\ %P set ls=2 " 始终显⽰状态⾏" 制表符set tabstop=4"把tab转成空格"set expandtabset smarttabset shiftwidth=4set softtabstop=4" 状态栏显⽰⽬前所执⾏的指令set showcmd" ⾏控制set linebreakset nocompatibleset textwidth=80set wrap" ⾏号和标尺set numberset rulerset rulerformat=%15(%c%V\ %p%%%)" 控制台响铃:set noerrorbells:set novisualbell:set t_vb= "close visual bell" 插⼊模式下使⽤ <BS>、<Del> <C-W> <C-U>set backspace=indent,eol,start" 标签页set tabpagemax=20set showtabline=2" 缩进智能对齐⽅式set autoindentset smartindent" ⾃动重新读⼊set autoread"代码折叠"设置折叠模式set foldcolumn=4"光标遇到折叠,折叠就打开"set foldopen=all"移开折叠时⾃动关闭折叠"set foldclose=all"zf zo zc zd zr zm zR zM zn zi zN"依缩进折叠" manual ⼿⼯定义折叠" indent 更多的缩进表⽰更⾼级别的折叠" expr ⽤表达式来定义折叠" syntax ⽤语法⾼亮来定义折叠" diff 对没有更改的⽂本进⾏折叠" marker 对⽂中的标志折叠set foldmethod=syntax"启动时不要⾃动折叠代码set foldlevel=100"依标记折叠set foldmethod=marker"语法⾼亮syntax enablesyntax on"设置配⾊set guifont=Courier\ New:h12colorscheme desert"设定⽂件浏览器⽬录为当前⽬录set bsdir=buffer" ⾃动切换到⽂件当前⽬录set autochdir"在查找时忽略⼤⼩写set ignorecaseset incsearchset hlsearch"设置命令⾏的⾼度set cmdheight=2"显⽰匹配的括号set showmatch"增强模式中的命令⾏⾃动完成操作set wildmenu"使PHP识别EOT字符串hi link phpheredoc string"php语法折叠let php_folding = 1"允许在有未保存的修改时切换缓冲区set hidden"实现全能补全功能,需要打开⽂件类型检测"filetype plugin indent on"打开vim的⽂件类型⾃动检测功能"filetype on"保存⽂件的格式顺序set fileformats=dos,unix"置粘贴模式,这样粘贴过来的程序代码就不会错位了。
如何使用Vim进行代码编辑引言:Vim是一款高度可定制的文本编辑器,广泛用于程序员和系统管理员之间的代码编辑和文本处理任务。
它具有强大的功能和灵活的操作方式,可以大大提高编码效率。
本文将介绍如何在Vim 中进行代码编辑,并列举一些常用的技巧和快捷方式,帮助读者更好地使用Vim编辑器。
第一章:Vim基础1.1 安装和启动Vim- 下载和安装Vim的最新版本;- 运行终端,并输入“vim”命令启动Vim编辑器;- 进入Vim的命令模式并开始编辑代码。
1.2 Vim的基本模式- 命令模式:用于执行各种编辑命令;- 插入模式:用于实际编辑文本;- 可视模式:用于选择和操作文本块。
第二章:Vim编辑技巧2.1 移动光标的快捷方式- 使用h、j、k、l键分别向左、向下、向上、向右移动光标;- 使用gg和G快速在文件的开头和结尾之间切换;- 使用Ctrl+f和Ctrl+b在文本之间快速滚动。
2.2 文本编辑和修改- 使用i和a命令进入插入模式,用于在当前光标处开始编辑;- 使用o和O命令在当前行之后或之前插入新行并进入插入模式;- 使用d和p命令删除和粘贴文本。
2.3 撤销和重做操作- 使用u和Ctrl+r命令撤销和重做上一次操作;- 使用U快速撤销对整行的修改;- 使用.命令重复上一次的修改操作。
第三章:Vim的高级功能3.1 多文件编辑- 使用:sp和:vsp命令在同一个窗口中同时打开多个文件;- 使用Ctrl+w+h、Ctrl+w+j、Ctrl+w+k和Ctrl+w+l快捷方式在不同窗口之间切换;- 使用:bn和:bp命令在不同的缓冲区之间切换。
3.2 快速搜索和替换- 使用/和?命令分别进行向前和向后的快速搜索;- 使用:%s/old/new/g命令进行全局搜索和替换;- 使用:n和:N命令在不同的匹配项之间跳转。
3.3 定制Vim编辑器- 创建.vimrc文件并添加个人配置选项;- 定制快捷键和颜色方案;- 下载和安装插件以增强Vim的功能。
vim配置(vimplus)教程及问题An automatic configuration program for vim安装(github地址:, 欢迎star和fork)Mac OS X安装/usr/bin/ruby -e "$(curl -fsSL https:///Homebrew/install/master/install)"安装vimplus1 git clone https:///chxuan/vimplus.git ~/.vimplus2 cd ~/.vimplus3 ./install.shUbuntu版本要求ubuntu14.04及其以上64位系统。
安装vimplus(建议在普通⽤户下安装)1 git clone https:///chxuan/vimplus.git ~/.vimplus2 cd ~/.vimplus3 ./install.shCentos版本要求centos7及其以上64位系统。
安装vimplus(建议在普通⽤户下安装)1 git clone https:///chxuan/vimplus.git ~/.vimplus2 cd ~/.vimplus3 ./install.shArchLinux安装vimplus1 git clone https:///chxuan/vimplus.git ~/.vimplus2 cd ~/.vimplus3 ./install.sh个性化修改~/.vimrc.local⽂件内容,以启⽤个性化定制,可覆盖~/.vimrc中的设置。
插件列表插件说明cpp-mode提供⽣成函数实现、函数声明/实现跳转、.h .cpp切换等功能(I'm author )vim-edit⽅便的⽂本编辑插件(I'm author )change-colorscheme随⼼所欲切换主题(I'm author )prepare-code新建⽂件时,⽣成预定义代码⽚段(I'm author )vim-buffer vim缓存操作(I'm author )vimplus-startify vimplus开始页⾯(修改⾃mhinz/vim-startify)tagbar使⽤majutsushi/tagbar的v2.3版本,taglist的替代品,显⽰类/⽅法/变量vim-plug⽐Vundle下载更快的插件管理软件YouCompleteMe史上最强⼤的基于语义的⾃动补全插件,⽀持C/C++、C#、Python、PHP等语⾔NerdTree代码资源管理器vim-nerdtree-syntax-highlight NerdTree⽂件类型⾼亮nerdtree-git-plugin NerdTree显⽰git状态vim-devicons显⽰⽂件类型图标Airline可以取代powerline的状态栏美化插件auto-pairs⾃动补全引号、圆括号、花括号等LeaderF⽐ctrlp更强⼤的⽂件的模糊搜索⼯具ack强⼤的⽂本搜索⼯具vim-surround⾃动增加、替换配对符的插件vim-commentary快速注释代码插件vim-repeat重复上⼀次操作vim-endwise if/end/endif/endfunction补全tabular代码、注释、表格对齐vim-easymotion强⼤的光标快速移动⼯具,强⼤到颠覆你的插件观incsearch.vim模糊字符搜索插件markdown-preview markdown实时预览vim-fugitive集成Gitgv显⽰git提交记录vim-slash优化搜索,移动光标后清除⾼亮echodoc补全函数时在命令栏显⽰函数签名vim-smooth-scroll让翻页更顺畅clever-f.vim强化f和F键github-complete.vim Emoji 补全vimcdoc vim中⽂⽂档快捷键以下是部分快捷键,更详细的快捷键请查阅vimplus帮助⽂档。
Vim 或Gvim 详细配置配置一览:1、括号自动匹配[ 支持所有的括号类型以及引号等]2、一键添加语法模板、作者、时间等信息3、单源文件一键编译、运行[ 已配置支持所有主流编程语言]4 、代码补全、函数跳转[ 由ctags 实现]5 、语法结构智能补全[ 由snipMate 实现]6、在Vim 里写博客、Wiki [ 由vimWiki 实现]7 、添加了Vim 文档的简体中文版8、更多功能详见配置代码,本处提供配置文件和自定义配置文件夹的下载,下载链接请见本文末尾经过着色的配置文件:使用说明:如果想图省事,那你就重新安装你的Vim 到D:\Apps\Gvim ,然后执行以下步骤:1 、把整个vimfiles 目录复制到D:\Apps\Gvim 目录下覆盖原有目录2、将ctags.exe 、cscope.exe 、unzip.exe 复制到D:\Apps\Gvim\vim73 目录3 、将D:\Apps\Gvim\vim73 添加进环境变量4、把_vimrc 文件复制到D:\Apps\Gvim 目录下覆盖原有文件[ 有完整版和无Vimwiki 版,建议使用后一版本] [ 如需使用wiki 功能则可使用完整版,并参考完成环境的配置] 配置文件中,凡涉及具体路径信息的请更换为你自己本机实际路径,凡涉及姓名、邮箱的请更换为你自己的姓名、邮箱ctags 使用方法简要介绍:比如我想添加C/C++ 语言的代码补全,并能在函数调用间实现跳转,请执行以下步骤:1 、首先确保系统能够找到ctags.exe ,也就是ctags.exe 添加到了系统环境变量2、以MinGW 为例,到你编译器安装目录的include 目录 (比如C:\MinGW\include )执行ctags -R --languages=c,c++ ,这将在include 目录下生成一个tags 文件3 、在_vimrc 文件中添加以下一行:set tags+=C:\MinGW\include\tags4、以后编辑C/C++ 源文件时,按Ctrl + P 即可拥有C/C++ 的代码提示。
Linux基本命令vim命令(⼀)vim的三种⼯作模式命令模式、输⼊模式和编辑模式的相互转换,如图命令模式:使⽤ Vim 编辑⽂件时,默认处于命令模式。
在此模式下,可以使⽤上、下、左、右键或者 k、j、h、l 命令进⾏光标移动,还可以对⽂件内容进⾏复制、粘贴、替换、删除等操作。
输⼊模式:在输⼊模式下可以对⽂件执⾏写操作。
进⼊输⼊模式的⽅法是输⼊ i、a、o 等插⼊命令,编写完成后按 Esc 键即可返回命令模式。
编辑模式:如果要保存、查找或者替换⼀些内容等,就需要进⼊编辑模式。
编辑模式的进⼊⽅法为:在命令模式下按" :"键,Vim 窗⼝的左下⽅会出现⼀个" :"符号后,这时就可以输⼊相关的指令进⾏操作了。
操作完按Enter键执⾏,指令执⾏后会⾃动返回命令模式。
使⽤Vim打开⽂件为了避免误操作我们将/etc下的profile复制到/tmp下进⾏操作,命令如下:[root@localhost /]# cp /etc/profile /tmp/profile.vim使⽤vim 进⼊profile⽂件的命令模式操作功能描述vim profile.vim只是打开⽂件打开⽂件后,直接定位指定⾏数处,vim +20 /tmp/profile.vim例如,打开 /tmp/profile.vim⽂件时直接进⼊第 20 ⾏打开⽂件后,直接定位指定⾏数处,vim +/future /tmp/profile.vim例如,打开 /tmp/profile.vim⽂件时直接定位到"future"字符串所在⾏打开⽂件后,接下来开始对⽂件进⾏操作。
进⼊输⼊命令模式从命令模式进⼊输⼊模式可以按下 I、i、A、a 、O、o、等键来完成,不同的键只是光标所处的位置不同⽽已。
当进⼊输⼊模式后,在 Vim 编辑窗⼝的左下⾓会出现"INSERT"标志,这就代表我们可⾏写⼊操作了,在vim中光标是停留在字符上的,例如在光标后⾯插⼊就是指在光标所在的字符的后⾯插⼊;操功能描述作i在当前光标所在位置插⼊输⼊的⽂本,光标后的⽂本相应向右移动I在光标所在⾏的⾏⾸插⼊输⼊的⽂本,⾏⾸是该⾏的第⼀个⾮空⽩字符,相当于光标移动到⾏⾸执⾏ i 命令a在当前光标所在位置之后插⼊输⼊的⽂本A在光标所在⾏的⾏尾插⼊输⼊的⽂本,相当于光标移动到⾏尾再执⾏ a 命令o在光标所在⾏的下⾯插⼊新的⼀⾏。
∙如果该文件存在,文件被打开并显示内容∙如果该文件不存在,当编辑后第一次存盘时创建它∙如果目录不存在,将无法保存编辑内容2. vim的三种模式vim是一款模式编辑器,对vim的操作进行在vim的三种模式之上。
所谓三种模式分别是:1.命令(Normal)模式,默认模式,主要作用是移动光标,剪切/粘贴文本。
2.插入(Insert)或编辑模式,主要作用是修改文本。
3.扩展命令(extended command )模式,主要作用是保存,退出等。
所以想要娴熟操作vim,在三种模式之间的切换是必不可少的。
vim的模式切换是以命令模式为基础的,也就是打开文件时的第一个界面,vim打开文件默认是在命令模式界面。
所以无论你是要进入扩展模式还是插入模式,都需要在命令模式进行切换,扩展模式和插入模式之间是不能直接切换的。
vim三种主要模式之间的切换:3.命令模式1.命令模式进入插入模式2.命令模式光标间跳转2.1字符间跳转:2.2单词间跳转:2.3当前页跳转:2.4行首行尾跳转:2.5行间移动:2.6句间移动2.7 段落间移动:3.命令模式翻屏操作4.命令模式编辑操作4.1字符编辑:4.2替换命令(r, replace)4.3删除命令(d,delete)4.4复制命令(y, yank):4.5粘贴命令(p, paste):4.6改变命令(c, change)4.7撤销更改4.2扩展命令模式:地址定界在扩展命令模式下进行地址定界方法一:利用行数进行定界格式|:开始#,结束#4.3扩展命令模式:查找查找命令:4.4扩展命令模式:查找并替换扩展命令模式下,在命令提示符后面输入字母―s‖,然后按格式输入要查找和替换的内容,便可进行查找替换。
格式:s/要查找的内容/替换为的内容/修饰符格式项作用要查找的内容分割符后输入要查找的内容,可使用模式,也就是正则表达式。
替换为的内容不能使用模式,但可以使用\1, \2, …等后向引用符号;还可以使用―&‖引用前面查找时查找到的整个内容修饰符:i 忽略大小写g 全局替换;默认情况下,每一行只替换第一次出现gc 全局替换,每次替换前询问如果查找和替换的内容中包含路径,再使用"/"作为分割符就不方便了,这时可以使用@、#等特殊符号来做分割符。
vim编辑器的使⽤这⾥主要介绍vim编辑器的⼀些常⽤命令和⽅法,主要包括: vim编辑器的基本使⽤,包括vi的启动与退出、⼯作模式的切换、光标的移动、屏幕的滚动、⽂本的插⼊与删除、复制与粘帖、查找与替换等。
vim编辑器之程序编辑,包括程序设计中光标的跳转、关键字的补全,以及代码的缩进等。
希望通过本节的学习,能够基本掌握vi编辑器的使⽤⽅法和相关技巧,能够独⽴完成程序源代码的编辑和修改。
1、 vim编辑器的基本使⽤ vim编辑器是Linux系统下的标准编辑器。
虽然命令繁多复杂,并且绝⼤多数功能的输⼊都依靠键盘来完成,但如果我们熟悉掌握之后就会发现vim编辑器的功能、效率等都是其他图形界⾯编辑器⽆法⽐拟的,下⾯让我们来揭开它的神秘⾯纱。
1.1、 vim的启动 在终端输⼊命令vim,后⾯接着输⼊想要创建或编辑的⽂件名,即可进⼊vim编辑器。
$ vim test.c 如果vi命令后⾯所输⼊的⽂件不存在,则系统会⾃动创建⼀个以该字符串命名的⽂本⽂件。
如上图,光标停留在左上⽅,由于新建⽂件中没有任何内容,所以每⼀⾏的开头都为波浪线。
窗⼝的底部为状态栏,显⽰当前编辑⽂件的相关信息。
打开⽂件后,光标停留在屏幕左上⽅。
状态栏显⽰了当前编辑⽂件的⽂件名、⾏数以及字符数等信息。
vi命令打开⽂件时还可以带参数,这些参数⽤于修正vi的打开⽅式,主要包括如下:-R :以只读⽅式打开⽂件。
如果只需阅读⽂件内容⽽不想对其进⾏修改时,可以使⽤这个参数,以防对⽂件的误操作,-x:该参数可以在保存⽂件时对其进⾏加密,以后每次打开都需要输⼊密钥,否则将出现乱码。
1.2 、vim的⼯作模式 vim有3种⼯作模式:普通模式、编辑模式和命令模式,这3种模式之间可以相互切换。
(1)、普通模式 由Shell进⼊vim编辑器时,⾸先进⼊普通模式。
在普通模式下,从键盘输⼊任何字符都被当作命令来解释。
普通模式下没有任何提⽰符,当输⼊命令时⽴即执⾏,不需要回车,⽽且输⼊的字符不会在屏幕上显⽰出来。
Vim---配置实⽤的.vimrc⽂件配置⾃⼰电脑的vim,配置⼀个根据个⼈习惯使⽤的.vimrc⽂件。
我的有以下功能等,读者可以根据⾃⼰的个⼈喜好去配置⾃⼰的vim。
1.⾃动插⼊⽂件头,新建C、C++源⽂件时⾃动插⼊表头:包括⽂件名、作者、联系⽅式、建⽴时间等。
(我个⼈是不太喜欢新建源⽂件时⾃动插⼊表头⽂件名,所以将其注释,读者可根据需求⾃⾏更改)2.按“F2”可以直接消除代码中的空⾏3.“F3”可列出当前⽬录⽂件,打开树状⽂件⽬录4.⽀持⿏标选择、⽅向键移动5.代码⾼亮,⾃动缩进,显⽰⾏号,显⽰状态⾏(我个⼈不太喜欢显⽰⾏号,显⽰状态⾏,读者可根据需求⾃⾏修改)6.按“Ctrl + P”可⾃动补全7.[]、{}、()、""、' '等都⾃动补全8.其他功能读者可以研究以下⽂件下⾯是在Linux下配置⾃⼰的vim的⽅法:⼀:1.⾸先打开linux的终端,使⽤ su root命令切换⾄root权限。
2.使⽤ls -al命令会打开当前的所有⽂件包括隐藏⽂件,如下图,找到.vimrc⽂件,如果没有这个⽂件,可以去创建⼀个.vimrc⽂件。
3.之后打开.vimrc⽂件将下⾯的代码粘贴进去,然后根据个⼈需求去修改为适合⾃⼰的.vimrc⽂件,保存退出,然后你可以⽤vim创建⼀个⽂件看⼀下效果,然后再根据个⼈需求⾃⾏修改。
这个⽅法配置的.vimrc⽂件可以由⽤户权限去⽤vim创建⽂件进⾏编辑,root权限⽤vim创建的⽂件⽆法达到你配置的效果。
⼆:如果你想要你配置的⽂件达到⽆论是⽤户权限还是root权限都可以⽤vim创建的⽂件达到你配置的⽂件的效果,可以⽤如下⽅法。
1.⾸先你转到根⽬录,在根⽬录下有个 etc 的⽂件夹,然后进到etc的⽬录下,然后列出当前的所有⽂件。
2.在当前的⽬录中的所有⽂件你会找到⼀个vimrc的⽂件,然后打开该⽂件将代码粘贴进去,然后根据个⼈需求去修改为适合⾃⼰的vimrc⽂件,保存退出,然后此时⽆论你⽤root权限还是⽤户权限⽤vim去创建⽂件都可以达到你配置的效果(提醒⼀下,如果你配置vimrc⽂件出错时,建议你在进⼊etc/⽬录下时,在修改vimrc⽂件之前可以先保存⼀份vimrc⽂件,之后再修改vimrc,防⽌你出错时还可以⽤备份的vimrc⽂件)。
Vim或Gvim详细配置配置一览:1、括号自动匹配[支持所有的括号类型以及引号等]2、一键添加语法模板、作者、时间等信息3、单源文件一键编译、运行[已配置支持所有主流编程语言]4、代码补全、函数跳转[由ctags实现]5、语法结构智能补全[由snipMate实现]6、在Vim里写博客、Wiki [由vimWiki实现]7、添加了Vim文档的简体中文版8、更多功能详见配置代码,本处提供配置文件和自定义配置文件夹的下载,下载链接请见本文末尾经过着色的配置文件:--------------------------------------------------使用说明:如果想图省事,那你就重新安装你的Vim到D:\Apps\Gvim,然后执行以下步骤:1、把整个vimfiles目录复制到D:\Apps\Gvim目录下覆盖原有目录2、将ctags.exe、cscope.exe、unzip.exe复制到D:\Apps\Gvim\vim73目录3、将D:\Apps\Gvim\vim73添加进环境变量4、把_vimrc文件复制到D:\Apps\Gvim目录下覆盖原有文件[有完整版和无Vimwiki版,建议使用后一版本] [如需使用wiki功能则可使用完整版,并参考完成环境的配置]配置文件中,凡涉及具体路径信息的请更换为你自己本机实际路径,凡涉及姓名、邮箱的请更换为你自己的姓名、邮箱------------------------ctags使用方法简要介绍:比如我想添加C/C++语言的代码补全,并能在函数调用间实现跳转,请执行以下步骤:1、首先确保系统能够找到ctags.exe,也就是ctags.exe添加到了系统环境变量2、以MinGW为例,到你编译器安装目录的include目录(比如C:\MinGW\include)执行ctags -R --languages=c,c++,这将在include目录下生成一个tags文件3、在_vimrc文件中添加以下一行:set tags+=C:\MinGW\include\tags4、以后编辑C/C++源文件时,按Ctrl + P即可拥有C/C++的代码提示。
比如,敲入一个pr,然后按这个快捷键,Vim将自动弹出包括printf在内的众多相关变量和函数名供你选择5、函数调用跳转:将光标移动某个函数名上,按Ctrl + ],Vim将跳转到该函数的定义处,按Ctrl + T即可返回以上只是ctags简单的用法,更专业的介绍请参考Google------------------------header.html和footer.html是我博客的wiki模板,如果你想使用vimwiki则可以借鉴使用教程资料文件夹附带了几份Vim参考材料,可以辅助Vim的使用本帖附件下载地址:标签:GVimVim代码片段(3)[图片] gvim.jpg[代码] _vimrc(完整版)view sourceprint?001 " ----------------- Author: Ruchee002 " ----------------- Email:003 " ----------------- WebSite:004 " ----------------- Date: 2012-01-04005006 " Ctrl + K --光标移上一行末尾007 " Ctrl + H --光标移行首008 " Ctrl + L --光标移行尾009 " Ctrl + Z --取代ESC模式键[和Lingos快捷键有冲突]010 " Ctrl + S --保存文件011 " Ctrl + C --编译[支持C/C++、Java、Haskell]012 " Ctrl + R --运行[支持C/C++、Java、Haskell、Lua、Perl、Python、Ruby]013 " Ctrl + ] --转到函数定义014 " Ctrl + T --返回调用函数015 " Ctrl + E --添加注释[插入模式下] [添加的是C语言的行注释,所以适用于C/C++/Java等]016 " Ctrl + E --一步加载语法模板和作者、时间信息[非插入模式下] [本质是:LoadTemplate和:AuthorInfoDetect的结合]017018 " <C-P> --单词补全019 " <C-X><C-L> --整行补全020 " Tab键--插入模式下的全功能语法结构补全[snipMate插件] 021022 " wm --开启文档浏览窗口023 " \ww --进入vimWiki模式024025 " za --打开或关闭当前折叠026 " zM --关闭所有折叠027 " zR --打开所有折叠028029 " :set syntax=cpp --手动选择语法高亮[或:set ]030031 " :%!xxd --转储二进制文件,以十六进制形式显示032 " :%!xxd -r --还原二进制文件033034035036 " ---------- 主要插件详细用法说明---------------------037038 " :Tlist --呼出变量和函数列表[TagList插件]039 " :FencView --查看文件编码和更改文件编码[FencView插件] 040 " :LoadTemplate --呼出语法模板[Load_Template插件]041 " :AuthorInfoDetect --添加作者、时间等信息[NERD_commenter && authorinfo插件]042043 " ---------- a.vim [自动切换C/C++同名头文件] ---------- 044 "045 " :A --切换同名头文件并独占整个屏幕046 " :AS --切换同名头文件并垂直分屏,头文件在上047 " :AV --切换同名头文件并水平分割,头文件在左048049 " ---------- mark.vim [追踪高亮指定关键字] ------------ 050 "051 " \m --normal模式下,在想要高亮的单词上面敲击\m即可高亮或取消高亮该单词052 " :Mark --取消所有高亮053 " :Mark abc --指定高亮单词abc 或取消高亮abc054055 " ---------- NERDTree [智能文件浏览器] ---------------- 056 "057 " :NERDTree --启动NERDTree插件058 " o [小写] --切换当前文件或目录的打开、关闭状态059 " u --打开上层目录060 " p [小写] --返回上层目录061 " P [大写] --返回根目录062 " K --转到当前目录第一个节点063 " J --转到当前目录最后的节点064 " m --显示文件系统菜单[增、删、移]065 " ? --弹出帮助菜单066 " q --退出该插件067068 " ---------- snipMate [语法结构补全] -------------------069 " --------- 例如:在编辑C/C++源文件时,输入单词main,然后按TAB键,Vim 将自动补全成完整的main函数070 " --------- 更多补全请自行查看vimfiles目录下的snippets文件夹071 " --------- 此处只说明了C/C++的补全用法,很多经过了我的修改和调整,你也可以自行调整成适合自己的补全样式072 "073 " main -- C/C++语言main 函数074 " inc -- #include <>075 " iinc -- #include ""076 " incs -- #include <stdio.h> or #include <iostream> 077 " using -- using namespace std;078 " def -- #define079 " un -- unsigned080 " re -- return081 " p -- printf("\n");082 " s -- scanf("");083 " fpr -- fprintf(abc, "\n");084 " if -- if(){}085 " elif -- elseif(){}086 " el -- else{}087 " t -- a ? b : c088 " do -- do{}while();089 " wh -- while(){}090 " for -- for(){}091 " forr -- for(i = 0; i < 10; i++){}092 " cl -- class abc{};093 " fun -- void abc(){}094 " fund -- void abc();095 " td -- typedef a b;096 " st -- struct abc{};097 " tds -- typedef struct _abc{}abc;098 " tde -- typedef enum{};099 " . -- []100101102103104105 " 配色方案106 colorscheme desert " 灰褐色107108 " 字体、字号109 set guifont=Courier\ New:h10110111 set tabstop=4 " 设置tab键的宽度112 set shiftwidth=4 " 换行时行间交错使用4个空格113 set autoindent " 自动对齐114 set backspace=2 " 设置退格键可用115 set cindent shiftwidth=4 " 自动缩进4空格116 set smartindent " 智能自动缩进117 set ai! " 设置自动缩进118 set nu! " 显示行号119 "set showmatch " 显示括号配对情况120 set mouse=a " 启用鼠标121 set ruler " 右下角显示光标位置的状态行122 set incsearch " 查找book时,当输入/b时会自动找到123 set hlsearch " 开启高亮显示结果124 set incsearch " 开启实时搜索功能125 set nowrapscan " 搜索到文件两端时不重新搜索126 set nocompatible " 关闭兼容模式127 set vb t_vb= " 关闭提示音128 "set cursorline " 突出显示当前行129 set hidden " 允许在有未保存的修改时切换缓冲区130 set list " 显示Tab符,使用一高亮竖线代替131 set listchars=tab:\|\ ,132133134 syntax enable " 打开语法高亮135 syntax on " 开启文件类型侦测136 indent on " 针对不同的文件类型采用不同的缩进格式137 plugin on " 针对不同的文件类型加载对应的插件138 plugin indent on139140 if has("gui_running")141 au GUIEnter * simalt ~x " 窗口启动时自动最大化142 "set guioptions-=m " 隐藏菜单栏143 set guioptions-=T " 隐藏工具栏144 "set guioptions-=L " 隐藏左侧滚动条145 "set guioptions-=r " 隐藏右侧滚动条146 "set guioptions-=b " 隐藏底部滚动条147 "set showtabline=0 " 隐藏T ab栏148 endif149150 set writebackup " 设置无备份文件151 set nobackup152 set autochdir " 设定文件浏览器目录为当前目录153 "set nowrap " 设置不自动换行154 set foldmethod=syntax " 选择代码折叠类型155 set foldlevel=100 " 禁止自动折叠156157 " 每行超过80个的字符用下划线标示158 au BufRead,BufNewFile *.asm,*.c,*.cpp,*.java,*.cs,*.sh,*.lua,*.pl,*.pm,*.py,*.rb,*.hs,*.vim 2match Underlined /.\%81v/159160161 " 编码设置162 "set encoding=utf-8163 set164165166 " For Haskell167 :let hs_highlight_delimiters=1 " 高亮定界符168 :let hs_highlight_boolean=1 " 把True和False识别为关键字169 :let hs_highlight_types=1 " 把基本类型的名字识别为关键字170 :let hs_highlight_more_types=1 " 把更多常用类型识别为关键字171 :let hs_highlight_debug=1 " 高亮调试函数的名字172 :let hs_allow_hash_operator=1 " 阻止把#高亮为错误173174175 set laststatus=2 " 开启状态栏信息176 set cmdheight=2 " 命令行的高度,默认为1,这里设为2177178 " 状态行显示的内容[包括系统平台、文件类型、坐标、所占比例、时间等]179 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %y%r%m%*%=\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}180181182183 " ######### 括号、引号、中括号等自动匹配######### " 184185 :inoremap ( ()<ESC>i186187 :inoremap ) <c-r>=ClosePair(')')<CR>188189 :inoremap { {}<ESC>i190191 :inoremap } <c-r>=ClosePair('}')<CR>192193 :inoremap [ []<ESC>i194195 :inoremap ] <c-r>=ClosePair(']')<CR>196197 ":inoremap < <><ESC>i198199 ":inoremap > <c-r>=ClosePair('>')<CR>200201 :inoremap " ""<ESC>i202203 :inoremap ' ''<ESC>i204205 :inoremap ` ``<ESC>i206207 function ClosePair(char)208 if getline('.')[col('.') - 1] == a:char209 return "\<Right>"210 else211 return a:char212 endif213 endf214215216217218 " ######### 自定义快捷键######### "219220 " Ctrl + K 将光标移到上一行的末尾221 imap <ESC>kA222223 " Ctrl + L 将光标移到行尾224 imap <ESC>A225226 " Ctrl + H 将光标移到行首227 imap <ESC>I228229 " Ctrl + Z 取代ESC模式键230 :inoremap <ESC>231232 " Ctrl + S 保存文件233 map <ESC>:w<CR>234 imap <ESC>:w<CR>a235 vmap <ESC>:w<CR>236237 " Ctrl + E 一步加载语法模板和作者、时间信息[非插入模式]238 map<ESC>:LoadTemplate<CR><ESC>:AuthorInfoDetect<CR><ESC>Gi239 vmap<ESC>:LoadTemplate<CR><ESC>:AuthorInfoDetect<CR><ESC>Gi240241 " Ctrl + E 在当前行添加C语言行注释[插入模式]242 imap /* */<ESC>hhi243244245246247248 " ######### 第三方插件######### "249250 " WinManager 直接输入wm 命令即可开启文件浏览窗口251 let g:winManagerWindowLayout=''252 nmap wm :WMToggle<cr>253254 " MiniBufExplorer 多个文件切换可使用鼠标双击相应文件名进行切换255 let g:miniBufExplMapWindowNavVim=1256 let g:miniBufExplMapWindowNavArrows=1257 let g:miniBufExplMapCTabSwitchBufs=1258 let g:miniBufExplModSelTarget=1259260 " TagList 键入:Tlist开启261 let Tlist_Show_One_File=1 " 只显示当前文件的tags262 let Tlist_Exit_OnlyWindow=1 " 如果Taglist窗口是最后一个窗口则退出Vim 263 let Tlist_Use_Right_Window=1 " 在右侧窗口中显示264265 " ctags266 " --先在项目顶层目录执行ctags -R,然后打开源文件,在命令模式中执行如:set tags=../../tags267 " --这样在函数名上按<C-]> 即可转到函数定义,按<C-T> 可以返回调用地址268 " --如果长时间需要在该目录工作,也可以将tags路径写入配置文件269270 "set tags+=C:\Develop\MinGW\include\tags " For C/C++271 "set tags+=C:\Develop\GTK\include\tags " For GTK+272 "set tags+=C:\Develop\Lua\lua\tags " For Lua273 "set tags+=G:\Cygwin\usr\include\tags " For Cygwin274275 " TxtBrowser 高亮TXT文本文件276 au BufRead,BufNewFile *.txt setlocal ft=txt277278 " fencview 自动编码识别:FencView 查看文件编码和更改文件编码279 let g:fencview_autodetect=1280281 " Load_Template 根据文件后缀自动加载模板,使用:LoadTemplate呼出282 let g:template_path='D:\Apps\Gvim\vimfiles\template\'283284 " NERD_commenter && authorinfo 自动添加作者、时间等信息,使用:AuthorInfoDetect呼出285 let g:vimrc_author='Ruchee'286 let g:vimrc_email=''287 let g:vimrc_homepage=''288289290291292293 " ######### 一键保存和编译######### "294 " ######### 如此处没有配置你需要的编程语言,请参照示例自行配置,很简单的295296 " 编译C源文件297 func! CompileGcc()298 exec "w"299 let compilecmd="!gcc -Wall -pedantic -std=c99 " 300 let compileflag="-o %<"301 exec compilecmd." % ".compileflag302 endfunc303304 " 编译C++源文件305 func! CompileCpp()306 exec "w"307 let compilecmd="!g++ -Wall -pedantic -std=c++98 " 308 let compileflag="-o %<"309 exec compilecmd." % ".compileflag310 endfunc311312 " 编译Java源文件313 func! CompileJava()314 exec "w"315 exec "!javac %"316 endfunc317318 " 编译Haskell源文件319 func! CompileHaskell()320 exec "w"321 let compilecmd="!ghc --make "322 let compileflag="-o %<"323 exec compilecmd." % ".compileflag324 endfunc325326 " 运行Lua源文件327 func! RunLua()328 exec "w"329 exec "!lua %"330 endfunc331332 " 运行Perl源文件333 func! RunPerl()334 exec "w"335 exec "!perl %"336 endfunc337338 " 运行Python源文件339 func! RunPython()340 exec "w"341 exec "!python %"342 endfunc343344 " 运行Ruby源文件345 func! RunRuby()346 exec "w"347 exec "!ruby %"348 endfunc349350351 " 根据文件类型自动选择相应的编译函数352 func! CompileCode()353 exec "w"354 if & == "c"355 exec "call CompileGcc()"356 elseif & == "cpp"357 exec "call CompileCpp()"358 elseif & == "java"359 exec "call CompileJava()"360 elseif & == "haskell"361 exec "call CompileHaskell()"362 elseif & == "lua"363 exec "call RunLua()"364 elseif & == "perl"365 exec "call RunPerl()"366 elseif & == "python"367 exec "call RunPython()"368 elseif & == "ruby"369 exec "call RunRuby()"370 endif371 endfunc372373 " 运行可执行文件374 func! RunResult()375 exec "w"376 if & == "c"377 exec "! %<"378 elseif & == "cpp"379 exec "! %<"380 elseif & == "java"381 exec "!java %<"382 elseif & == "haskell"383 exec "! %<"384 elseif & == "lua"385 exec "!lua %<.lua"386 elseif & == "perl"387 exec "!perl %<.pl"388 elseif & == "python"389 exec "!python %<.py"390 elseif & == "ruby"391 exec "!ruby %<.rb"392 endif393 endfunc394395396 " Ctrl + C 一键保存、编译397 map :call CompileCode()<CR>398 imap <ESC>:call CompileCode()<CR> 399 vmap <ESC>:call CompileCode()<CR> 400401 " Ctrl + R 一键保存、运行402 map :call RunResult()<CR>403 imap <ESC>:call RunResult()<CR> 404 vmap <ESC>:call RunResult()<CR>405406407408409 " ######### VimWiki 写作助手######### " 410411 " 使用鼠标映射412 let g:vimwiki_use_mouse = 1413414 " 不要将驼峰式词组作为Wiki 词条415 let g:vimwiki_camel_case = 0416417 " 声明可以在wiki里面使用的HTML标签418 letg:vimwiki_valid_html_tags='b,i,s,u,sub,sup,kbd,br,hr,div,del,code,red,c enter,left,right,h4,h5,h6,pre'419420 let g:vimwiki_list = [{421 \ 'path': 'D:/Apps/Gvim/mysite/wiki',422 \ 'path_html': 'D:/Apps/Gvim/mysite/html/',423 \ 'html_header': 'D:/Apps/Gvim/mysite/template/header.html', 424 \ 'html_footer': 'D:/Apps/Gvim/mysite/template/footer.html', 425 \ 'auto_export': 1,426 \ 'nested_syntaxes': {'Asm': 'asm', 'C': 'c', 'C++': 'cpp','Java': 'java', 'Haskell': 'haskell', 'Lua': 'lua', 'Perl': 'perl', 'Python': 'python', 'PHP': 'php', 'HTML': 'html', 'Bash': 'sh', 'Vim': 'vim', 'Make': 'make', 'Automake': 'AUTOMAKE'},}][代码] _vimrc(无Vimwiki版)view sourceprint?001" 配色方案002colorscheme desert " 灰褐色003004" 字体、字号005set guifont=Courier\ New:h10006007set tabstop=4 " 设置tab键的宽度008set shiftwidth=4 " 换行时行间交错使用4个空格009set autoindent " 自动对齐01set backspace=2 " 设置退格键可用01set cindent shiftwidth=4 " 自动缩进4空格101set smartindent " 智能自动缩进201set ai! " 设置自动缩进301set nu! " 显示行号401"set showmatch " 显示括号配对情况501set mouse=a " 启用鼠标601set ruler " 右下角显示光标位置的状态行701set incsearch " 查找book时,当输入/b时会自动找到801set hlsearch " 开启高亮显示结果902set incsearch " 开启实时搜索功能02set nowrapscan " 搜索到文件两端时不重新搜索102set nocompatible " 关闭兼容模式202set vb t_vb= " 关闭提示音302"set cursorline " 突出显示当前行402set hidden " 允许在有未保存的修改时切换缓冲区502set list " 显示Tab符,使用一高亮竖线代替602set listchars=tab:\|\ ,702802903syntax enable " 打开语法高亮03syntax on " 开启文件类型侦测103indent on " 针对不同的文件类型采用不同的缩进格式203plugin on " 针对不同的文件类型加载对应的插件303plugin indent on4035036if has("gui_running")037au GUIEnter * simalt ~x " 窗口启动时自动最大化038"set guioptions-=m " 隐藏菜单栏039set guioptions-=T " 隐藏工具栏04"set guioptions-=L " 隐藏左侧滚动条041"set guioptions-=r " 隐藏右侧滚动条042"set guioptions-=b " 隐藏底部滚动条043"set showtabline=0 " 隐藏T ab栏044endif045046set writebackup " 设置无备份文件047set nobackup048set autochdir " 设定文件浏览器目录为当前目录049"set nowrap " 设置不自动换行05set foldmethod=syntax " 选择代码折叠类型051set foldlevel=100 " 禁止自动折叠052053" 每行超过80个的字符用下划线标示05 4 au BufRead,BufNewFile *.asm,*.c,*.cpp,*.java,*.cs,*.sh,*.lua,*.pl,*.pm,*.py,*.rb,*.hs,*.vim2match Underlined /.\%81v/055056057" 编码设置058"set encoding=utf-8 059set06061062" For Haskell063:let hs_highlight_delimiters=1 " 高亮定界符064:let hs_highlight_boolean=1 " 把True和False识别为关键字065:let hs_highlight_types=1 " 把基本类型的名字识别为关键字066:let hs_highlight_more_types=1 " 把更多常用类型识别为关键字067:let hs_highlight_debug=1 " 高亮调试函数的名字068:let hs_allow_hash_operator=1 " 阻止把#高亮为错误06907071set laststatus=2 " 开启状态栏信息072set cmdheight=2 " 命令行的高度,默认为1,这里设为2073074" 状态行显示的内容[包括系统平台、文件类型、坐标、所占比例、时间等]07 5 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %y%r%m%*%=\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}076077078079" ######### 括号、引号、中括号等自动匹配######### " 08081:inoremap ( ()<ESC>i082083:inoremap ) <c-r>=ClosePair(')')<CR>08408:inoremap { {}<ESC>i508608:inoremap } <c-r>=ClosePair('}')<CR> 708808:inoremap [ []<ESC>i90909:inoremap ] <c-r>=ClosePair(']')<CR> 109209":inoremap < <><ESC>i309409":inoremap > <c-r>=ClosePair('>')<CR> 509609:inoremap " ""<ESC>i709809:inoremap ' ''<ESC>i91010:inoremap ` ``<ESC>i110210function ClosePair(char)310if getline('.')[col('.') - 1] == a:char410return "\<Right>"510else610return a:char710endif810endf91111111211311" ######### 自定义快捷键######### "411511" Ctrl + K 将光标移到上一行的末尾611imap <ESC>kA711811" Ctrl + L 将光标移到行尾912imap <ESC>A12112" Ctrl + H 将光标移到行首212imap <ESC>I312412" Ctrl + Z 取代ESC模式键512:inoremap <ESC>612712" Ctrl + S 保存文件812map <ESC>:w<CR>913imap <ESC>:w<CR>a13vmap <ESC>:w<CR>113213" Ctrl + E 一步加载语法模板和作者、时间信息[非插入模式]313map <ESC>:LoadTemplate<CR><ESC>:AuthorInfoDetect<CR><ESC>Gi 413vmap <ESC>:LoadTemplate<CR><ESC>:AuthorInfoDetect<CR><ESC>Gi 513613" Ctrl + E 在当前行添加C语言行注释[插入模式]713imap /* */<ESC>hhi81391414114214314" ######### 第三方插件######### "414514" WinManager 直接输入wm 命令即可开启文件浏览窗口614let g:winManagerWindowLayout=''714nmap wm :WMToggle<cr>814915" MiniBufExplorer 多个文件切换可使用鼠标双击相应文件名进行切换15let g:miniBufExplMapWindowNavVim=1115let g:miniBufExplMapWindowNavArrows=1215let g:miniBufExplMapCTabSwitchBufs=1315let g:miniBufExplModSelTarget=1415515" TagList 键入:Tlist开启615let Tlist_Show_One_File=1 " 只显示当前文件的tags715let Tlist_Exit_OnlyWindow=1 " 如果Taglist窗口是最后一个窗口则退出Vim815let Tlist_Use_Right_Window=1 " 在右侧窗口中显示9161" ctags16 2 " --先在项目顶层目录执行ctags -R,然后打开源文件,在命令模式中执行如:set tags=../../tags163" --这样在函数名上按<C-]> 即可转到函数定义,按<C-T> 可以返回调用地址164" --如果长时间需要在该目录工作,也可以将tags路径写入配置文件165166"set tags+=C:\Develop\MinGW\include\tags " For C/C++167"set tags+=C:\Develop\GTK\include\tags " For GTK+168"set tags+=C:\Develop\Lua\lua\tags " For Lua169"set tags+=G:\Cygwin\usr\include\tags " For Cygwin17171" TxtBrowser 高亮TXT文本文件172au BufRead,BufNewFile *.txt setlocal ft=txt173174" fencview 自动编码识别:FencView 查看文件编码和更改文件编码175let g:fencview_autodetect=1176177" Load_Template 根据文件后缀自动加载模板,使用:LoadTemplate呼出178let g:template_path='D:\Apps\Gvim\vimfiles\template\'17918 0 " NERD_commenter && authorinfo 自动添加作者、时间等信息,使用:AuthorInfoDetect呼出181let g:vimrc_author='Ruchee' 182let g:vimrc_email=''183let g:vimrc_homepage=''184186187188189" ######### 一键保存和编译######### "19 0 " ######### 如此处没有配置你需要的编程语言,请参照示例自行配置,很简单的191192" 编译C源文件193func! CompileGcc()194exec "w"195let compilecmd="!gcc -Wall -pedantic -std=c99 "196let compileflag="-o %<"197exec compilecmd." % ".compileflag198endfunc19920" 编译C++源文件201func! CompileCpp()202exec "w"203let compilecmd="!g++ -Wall -pedantic -std=c++98 " 204let compileflag="-o %<"205exec compilecmd." % ".compileflag206endfunc207208" 编译Java源文件209func! CompileJava()21exec "w"21exec "!javac %"121endfunc221321" 编译Haskell源文件421func! CompileHaskell()521exec "w"621let compilecmd="!ghc --make "721let compileflag="-o %<"821exec compilecmd." % ".compileflag 922endfunc22122" 运行Lua源文件222func! RunLua()322exec "w"422exec "!lua %"522endfunc622722" 运行Perl源文件822func! RunPerl()923exec "w"23exec "!perl %"123endfunc223323" 运行Python源文件423func! RunPython()523exec "w"623exec "!python %"723endfunc823924" 运行Ruby源文件24func! RunRuby()124exec "w"224exec "!ruby %"324endfunc424524624" 根据文件类型自动选择相应的编译函数724func! CompileCode()824exec "w"925if & == "c"25exec "call CompileGcc()"125elseif & == "cpp"225exec "call CompileCpp()"325elseif & == "java"425exec "call CompileJava()"525elseif & == "haskell"625exec "call CompileHaskell()"725elseif & == "lua"825exec "call RunLua()"926elseif & == "perl"26exec "call RunPerl()"126elseif & == "python"226exec "call RunPython()" 326elseif & == "ruby"426exec "call RunRuby()" 526endif626endfunc726826" 运行可执行文件927func! RunResult()27exec "w"127if & == "c"227exec "! %<"327elseif & == "cpp"427exec "! %<"527elseif & == "java"627exec "!java %<"727elseif & == "haskell"827exec "! %<"928elseif & == "lua"28exec "!lua %<.lua"128elseif & == "perl"228exec "!perl %<.pl"328elseif & == "python"428exec "!python %<.py"528elseif & == "ruby"628exec "!ruby %<.rb"728endif828endfunc92929129" Ctrl + C 一键保存、编译229map :call CompileCode()<CR>329imap <ESC>:call CompileCode()<CR> 429vmap <ESC>:call CompileCode()<CR> 529629" Ctrl + R 一键保存、运行729map :call RunResult()<CR>829imap <ESC>:call RunResult()<CR>930vmap <ESC>:call RunResult()<CR>。