操做
文件打开与多文件
:e f:\demo.py |
打开一个文件 |
:tabnew f:\demo.py |
打开一个标签 |
:bn |
下一个文件 |
:bp |
上一个文件 |
:b3 |
切换至第 3 个文件 |
:b3.py |
切换至 3.py 文件 |
:ls |
列出打开的文件,带序号 |
:bd! |
关闭当前文件不关闭 gvim 窗口 |
:close |
关闭窗口 |
光标移动
10 + enter |
向下移动 10 行 |
^ | 0 |
移至当前行的开头位置 |
$ |
移至当前行的结尾位置 |
w |
将光标移到下一个单词的开头(W 包含标点符号) |
b |
将光标移到上一个单词的开头(B 包含标点符号) |
( |
将光标移到当前或上一句子的开头 |
) |
将光标移到下一句子的开头 |
{ |
将光标移到上一段落的开头 |
} |
将光标移到下一段落的开头 |
ctrl + f |
下一页 |
ctrl + b |
上一页 |
插入模式
i |
光标前插入 |
I |
行首插入 |
a |
光标后插入 |
A |
行尾插入 |
R |
光标前替换 |
o |
下方新开一行 |
O |
上放新开一行 |
撤销与重作
u |
退回前一个动做 |
ctrl + r |
重复前一个动做 |
:e! |
还原上次保存的状态 |
删除与剪切
x |
向后删除一个字符 |
X |
向前删除一个字符 |
dd |
剪切光标所在的那一行 |
d$ |
删除当前行光标后的内容 |
ndd |
剪切光标所在的向下n行(n为数字) |
D |
剪切光标所在行的内容(不删除行) |
d1G |
剪切光标所在行到第一行的全部数据,包含当行。 |
dG |
剪切光标所在行到末行的全部数据,包含当行。 |
查找与替换
在正常模式下按 / 便可进入查找模式php
/demo |
查找 demo,按 n 下一个,按 N 上一个 |
g |
全局替换 |
i |
大小写不敏感 |
I |
大小写敏感 |
gc |
确认 |
:s/1/2/g |
当前行 1 替换成 2,g 为全部出现都会被替换 |
:%s/1/2/g |
全文 1 替换成 2,g 为全部出现都会被替换, |
:'<,'>s/1/2/g |
选区 1 替换成 2,g 为全部出现都会被替换 |
:.,+2s/1/2/g |
当前行至 +2 行1 替换成 2,g 为全部出现都会被替换 |
可视化模式
v |
字符可视化模式 |
V |
行可视化模式 |
ctrl + q |
块可视化模式 |
复制粘贴
yy |
复制当前行 |
2yy |
复制两行 |
y2w |
复制两个单词 |
p |
光标后粘贴 |
P |
光标前粘贴 |
shift + inset |
粘贴剪切板内容 |
注释与取消注释
一、命令行模式下光标固定在第一列 Ctrl + q 进入可视化块模式html
二、上下移动光标选择要注释的行java
三、大写 i 进入插入模式而后输入注释符 #python
四、按两次 esc 就注释成功了linux
五、取消注释一样操做前两步骤,选中后按 d 删除ios
多行缩进
shift + v 进入可视化模式上下选择须要缩进或取消缩进的行 shift + < 或者 shift + > 便可c++
分割窗口
:vs |
纵向分隔 |
:sp |
横向分隔 |
ctrl + w + w |
切换窗口 |
:qa |
关闭全部窗口 |
保存文件与退出
:w |
保存当前文件并留在编辑器中 |
:w! |
若文本为只读模式,强制保存 |
:q |
退出当前文件,仅在没有未保存更改的状况下。 |
:q! |
退出当前文件,忽略任何未保存的修改 |
:wq |
保存并退出当前文件 |
ZZ |
保存并退出当前文件 |
配置详解
在 vim 根目录 _vimrc 中设定git
set fileencoding=utf-8 |
当前文件设置为 utf-8 编码 |
set nu |
行号开关 |
set wrap! |
关闭词折行 |
colorscheme monokai |
代码高亮 |
syntax on |
语法自动 |
set nocompatible |
能够回退多步 |
set guioptions-=m |
隐藏菜单栏 |
set guioptions-=T |
隐藏工具栏 |
set guioptions-=r |
隐藏右侧滚动条 |
set ai |
自动缩进 |
set sts=4 |
缩进 4 个空格 |
set shiftwidth=4 |
缩进 4 个空格 |
set expandtab |
用恰当的空格来填充这个 tab |
set guifont |
查询当前字体 |
set gfn=Microsoft_YaHei_Mono:h11:cGB2312 |
设置字体 |
set ruler set rulerformat=%20(%2*%<%f%= %m%r %3l %c %p%%%) |
在状态行上显示光标所在位置的行号和列号 |
set cmdheight=2 |
末行命令行高度 |
set backspace=2 |
使用回格键(backspace) |
set ignorecase |
在搜索的时候忽略大小写 |
set laststatus=2 |
老是显示状态行 |
autocmd GUIEnter * simalt ~x |
窗口最大化 |
set lines=37 columns=120 |
窗口自定义大小 |
map <F11> <Esc>:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR> |
全屏 |
tab 缩进为 4个空格
set ts=4
set expandtab
set autoindent
一键执行脚本
! |
执行命令 |
% |
当前打开文件含后缀名的绝对路径 |
%< |
当前打开文件绝对路径中不含后缀的文件名 |
func CompileRun()
exec "w"
if &filetype == "python"
exec " !python % "
elseif &filetype == "c"
exec " !gcc % -o %< "
exec " !%< "
elseif &filetype == "cpp"
exec " !g++ % -o %< "
exec " !%< "
elseif &filetype == "java"
exec " !javac % "
exec " !java % "
elseif &filetype == "html"
exec " !% "
elseif &filetype == "go"
exec " !go run % "
endif
endfunc
map <F9> :call CompileRun()<CR>
字典补全
set dictionary=$vim\dict.txt |
设置字典路径 |
English
read write easy
python
c
配置文件
vim_vimrc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 纠结
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 显示相关
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"set shortmess=atI " 启动的时候不显示那个援助乌干达儿童的提示
"winpos 5 5 " 设定窗口位置
"set lines=40 columns=155 " 设定窗口大小
"set nu " 显示行号
set go= " 不要图形按钮
"color asmanian2 " 设置背景主题
set guifont=Courier_New:h10:cANSI " 设置字体
"syntax on " 语法高亮
autocmd InsertLeave * se nocul " 用浅色高亮当前行
autocmd InsertEnter * se cul " 用浅色高亮当前行
"set ruler " 显示标尺
set showcmd " 输入的命令显示出来,看的清楚些
"set cmdheight=1 " 命令行(在状态行下)的高度,设置为1
"set whichwrap+=<,>,h,l " 容许backspace和光标键跨越行边界(不建议)
"set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离
set novisualbell " 不要闪烁(不明白)
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "状态行显示的内容
set laststatus=1 " 启动显示状态行(1),老是显示状态行(2)
set foldenable " 容许折叠
set foldmethod=manual " 手动折叠
"set background=dark "背景使用黑色
set nocompatible "去掉讨厌的有关vi一致性模式,避免之前版本的一些bug和局限
" 显示中文帮助
if version >= 603
set helplang=cn
set encoding=utf-8
endif
" 设置配色方案
"colorscheme murphy
"字体
"if (has("gui_running"))
" set guifont=Bitstream\ Vera\ Sans\ Mono\ 10
"endif
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936
set fileencoding=utf-8
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""新文件标题""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"新建.c,.h,.sh,.java文件,自动插入文件头
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
""定义函数SetTitle,自动插入文件头
func SetTitle()
"若是文件类型为.sh文件
if &filetype == 'sh'
call setline(1,"\#########################################################################")
call append(line("."), "\# File Name: ".expand("%"))
call append(line(".")+1, "\# Author: ma6174")
call append(line(".")+2, "\# mail: ma6174@163.com")
call append(line(".")+3, "\# Created Time: ".strftime("%c"))
call append(line(".")+4, "\#########################################################################")
call append(line(".")+5, "\#!/bin/bash")
call append(line(".")+6, "")
else
call setline(1, "/*************************************************************************")
call append(line("."), " > File Name: ".expand("%"))
call append(line(".")+1, " > Author: ma6174")
call append(line(".")+2, " > Mail: ma6174@163.com ")
call append(line(".")+3, " > Created Time: ".strftime("%c"))
call append(line(".")+4, " ************************************************************************/")
call append(line(".")+5, "")
endif
if &filetype == '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
"新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"键盘命令
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
nmap <leader>w :w!<cr>
nmap <leader>f :find<cr>
" 映射全选+复制 ctrl+a
map <C-A> ggVGY
map! <C-A> <Esc>ggVGY
map <F12> gg=G
" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y
"去空行
nnoremap <F2> :g/^\s*$/d<CR>
"比较文件
nnoremap <C-F2> :vert diffsplit
"新建标签
map <M-F2> :tabnew<CR>
"列出当前目录文件
map <F3> :tabnew .<CR>
"打开树状文件目录
map <C-F3> \be
"C,C++ 按F9编译运行
map <F9> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec "!gcc % -o %<"
exec "! ./%<"
elseif &filetype == 'python'
exec " !python3 % "
elseif &filetype == 'java'
exec "!javac %"
exec "!java %<"
elseif &filetype == 'sh'
:!./%
endif
endfunc
"C,C++的调试
map <F8> :call Rungdb()<CR>
func! Rungdb()
exec "w"
exec "!g++ % -g -o %<"
exec "!gdb ./%<"
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""实用设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 设置当文件被改动时自动载入
set autoread
" quickfix模式
autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
"代码补全
set completeopt=preview,menu
"容许插件
filetype plugin on
"共享剪贴板
set clipboard+=unnamed
"从不备份
set nobackup
"make 运行
:set makeprg=g++\ -Wall\ \ %
"自动保存
set autowrite
set ruler " 打开状态栏标尺
set cursorline " 突出显示当前行
set magic " 设置魔术
set guioptions-=T " 隐藏工具栏
set guioptions-=m " 隐藏菜单栏
"set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
" 设置在状态行显示的信息
set foldcolumn=0
set foldmethod=indent
set foldlevel=3
set foldenable " 开始折叠
" 不要使用vi的键盘模式,而是vim本身的
set nocompatible
" 语法高亮
set syntax=on
" 去掉输入错误的提示声音
set noeb
" 在处理未保存或只读文件的时候,弹出确认
set confirm
" 自动缩进
set autoindent
set cindent
" Tab键的宽度
set tabstop=4
" 统一缩进为4
set softtabstop=4
set shiftwidth=4
" 不要用空格代替制表符
set noexpandtab
" 在行和段开始处使用制表符
set smarttab
" 显示行号
set number
" 历史记录数
set history=1000
"禁止生成临时文件
set nobackup
set noswapfile
"搜索忽略大小写
set ignorecase
"搜索逐字符高亮
set hlsearch
set incsearch
"行内替换
set gdefault
"编码设置
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"语言设置
set langmenu=zh_CN.UTF-8
set helplang=cn
" 个人状态行显示的内容(包括文件类型和解码)
"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
"set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
" 老是显示状态行
set laststatus=2
" 命令行(在状态行下)的高度,默认为1,这里是2
set cmdheight=2
" 侦测文件类型
filetype on
" 载入文件类型插件
filetype plugin on
" 为特定文件类型载入相关缩进文件
filetype indent on
" 保存全局变量
set viminfo+=!
" 带有以下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
" 字符间插入的像素行数目
set linespace=0
" 加强模式中的命令行自动完成操做
set wildmenu
" 使回格键(backspace)正常处理indent, eol, start等
set backspace=2
" 容许backspace和光标键跨越行边界
set whichwrap+=<,>,h,l
" 能够在buffer的任何地方使用鼠标(相似office中在工做区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
" 经过使用: commands命令,告诉咱们文件的哪一行被改变过
set report=0
" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\
" 高亮显示匹配的括号
set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=1
" 光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=3
" 为C程序提供自动缩进
set smartindent
" 高亮显示普通txt文件(须要txt.vim脚本)
au BufRead,BufNewFile * setfiletype txt
"自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endfunction
filetype plugin indent on
"打开文件类型检测, 加了这句才能够用智能补全
set completeopt=longest,menu
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" CTags的设定
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let Tlist_Sort_Type = "name" " 按照名称排序
let Tlist_Use_Right_Window = 1 " 在右侧显示窗口
let Tlist_Compart_Format = 1 " 压缩方式
let Tlist_Exist_OnlyWindow = 1 " 若是只有一个buffer,kill窗口也kill掉buffer
let Tlist_File_Fold_Auto_Close = 0 " 不要关闭其余文件的tags
let Tlist_Enable_Fold_Column = 0 " 不要显示折叠树
autocmd FileType java set tags+=D:\tools\java\tags
"autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags
"let Tlist_Show_One_File=1 "不一样时显示多个文件的tag,只显示当前文件的
"设置tags
set tags=tags
"set autochdir
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"其余东东
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"默认打开Taglist
let Tlist_Auto_Open=1
""""""""""""""""""""""""""""""
" Tag list (ctags)
""""""""""""""""""""""""""""""""
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
let Tlist_Show_One_File = 1 "不一样时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 "若是taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
" minibufexpl插件的通常设置
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 纠结
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" tab 缩进为 4 个空格
set ts=4
set expandtab
set autoindent
gvim_vimrc
" =============================================================================
" << 判断操做系统是 Windows 仍是 Linux 和判断是终端仍是 Gvim >>
" =============================================================================
" -----------------------------------------------------------------------------
" < 判断操做系统是不是 Windows 仍是 Linux >
" -----------------------------------------------------------------------------
let g:iswindows = 0
let g:islinux = 0
if(has("win32") || has("win64") || has("win95") || has("win16"))
let g:iswindows = 1
else
let g:islinux = 1
endif
" -----------------------------------------------------------------------------
" < 判断是终端仍是 Gvim >
" -----------------------------------------------------------------------------
if has("gui_running")
let g:isGUI = 1
else
let g:isGUI = 0
endif
" =============================================================================
" << 如下为软件默认配置 >>
" =============================================================================
" -----------------------------------------------------------------------------
" < Windows Gvim 默认配置> 作了一点修改
" -----------------------------------------------------------------------------
if (g:iswindows && g:isGUI)
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction
endif
" -----------------------------------------------------------------------------
" < Linux Gvim/Vim 默认配置> 作了一点修改
" -----------------------------------------------------------------------------
if g:islinux
set hlsearch "高亮搜索
set incsearch "在输入要搜索的文字时,实时匹配
" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
if g:isGUI
" Source a global configuration file if available
if filereadable("/etc/vim/gvimrc.local")
source /etc/vim/gvimrc.local
endif
else
" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
runtime! debian.vim
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
if has("syntax")
syntax on
endif
set mouse=a " 在任何模式下启用鼠标
set t_Co=256 " 在终端启用256色
set backspace=2 " 设置退格键可用
" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")
source /etc/vim/vimrc.local
endif
endif
endif
" =============================================================================
" << 如下为用户自定义配置 >>
" =============================================================================
" -----------------------------------------------------------------------------
" < Vundle 插件管理工具配置 >
" -----------------------------------------------------------------------------
" 用于更方便的管理vim插件,具体用法参考 :h vundle 帮助
" Vundle工具安装方法为在终端输入以下命令
" git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
" 若是想在 windows 安装就必需先安装 "git for window",可查阅网上资料
set nocompatible "禁用 Vi 兼容模式
filetype off "禁用文件类型侦测
if g:islinux
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
else
set rtp+=$VIM/vimfiles/bundle/vundle/
call vundle#rc('$VIM/vimfiles/bundle/')
endif
" 使用Vundle来管理插件,这个必需要有。
Bundle 'gmarik/vundle'
" 如下为要安装或更新的插件,不一样仓库都有(具体书写规范请参考帮助)
Bundle 'a.vim'
Bundle 'Align'
Bundle 'jiangmiao/auto-pairs'
Bundle 'bufexplorer.zip'
Bundle 'ccvext.vim'
Bundle 'cSyntaxAfter'
Bundle 'ctrlpvim/ctrlp.vim'
Bundle 'mattn/emmet-vim'
Bundle 'Yggdroot/indentLine'
Bundle 'vim-javacompleteex'
Bundle 'Mark--Karkat'
Bundle 'Shougo/neocomplcache.vim'
Bundle 'scrooloose/nerdcommenter'
Bundle 'scrooloose/nerdtree'
Bundle 'OmniCppComplete'
Bundle 'Lokaltog/vim-powerline'
Bundle 'repeat.vim'
Bundle 'msanders/snipmate.vim'
Bundle 'wesleyche/SrcExpl'
Bundle 'std_c.zip'
Bundle 'tpope/vim-surround'
Bundle 'scrooloose/syntastic'
Bundle 'majutsushi/tagbar'
Bundle 'taglist.vim'
Bundle 'TxtBrowser'
Bundle 'ZoomWin'
" -----------------------------------------------------------------------------
" < 编码配置 >
" -----------------------------------------------------------------------------
" 注:使用utf-8格式后,软件与程序源码、文件路径不能有中文,不然报错
set encoding=utf-8 "设置gvim内部编码,默认不更改
" set fileencoding=utf-8 "设置当前文件编码,能够更改,如:gbk(同cp936)
set fileencoding=gbk "设置当前文件编码,能够更改,如:gbk(同cp936)
set fileencodings=ucs-bom,utf-8,gbk,cp936,latin-1 "设置支持打开的文件的编码
" 文件格式,默认 ffs=dos,unix
set fileformat=unix "设置新(当前)文件的<EOL>格式,能够更改,如:dos(windows系统经常使用)
set fileformats=unix,dos,mac "给出文件的<EOL>格式类型
if (g:iswindows && g:isGUI)
"解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
"解决consle输出乱码
language messages zh_CN.utf-8
endif
" -----------------------------------------------------------------------------
" < 编写文件时的配置 >
" -----------------------------------------------------------------------------
filetype on "启用文件类型侦测
filetype plugin on "针对不一样的文件类型加载对应的插件
filetype plugin indent on "启用缩进
set smartindent "启用智能对齐方式
set expandtab "将Tab键转换为空格
set tabstop=4 "设置Tab键的宽度,能够更改,如:宽度为2
set shiftwidth=4 "换行时自动缩进宽度,可更改(宽度同tabstop)
set smarttab "指定按一次backspace就删除shiftwidth宽度
set foldenable "启用折叠
set foldmethod=indent "indent 折叠方式
" set foldmethod=marker "marker 折叠方式
" 常规模式下用空格键来开关光标行所在折叠(注:zR 展开全部折叠,zM 关闭全部折叠)
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
" 当文件在外部被修改,自动更新该文件
set autoread
" 常规模式下输入 cS 清除行尾空格
nmap cS :%s/\s\+$//g<CR>:noh<CR>
" 常规模式下输入 cM 清除行尾 ^M 符号
nmap cM :%s/\r$//g<CR>:noh<CR>
set ignorecase "搜索模式里忽略大小写
set smartcase "若是搜索模式包含大写字符,不使用 'ignorecase' 选项,只有在输入搜索模式而且打开 'ignorecase' 选项时才会使用
" set noincsearch "在输入要搜索的文字时,取消实时匹配
" Ctrl + K 插入模式下光标向上移动
imap <c-k> <Up>
" Ctrl + J 插入模式下光标向下移动
imap <c-j> <Down>
" Ctrl + H 插入模式下光标向左移动
imap <c-h> <Left>
" Ctrl + L 插入模式下光标向右移动
imap <c-l> <Right>
" 启用每行超过80列的字符提示(字体变蓝并加下划线),不启用就注释掉
au BufWinEnter * let w:m2=matchadd('Underlined', '\%>' . 80 . 'v.\+', -1)
" -----------------------------------------------------------------------------
" < 界面配置 >
" -----------------------------------------------------------------------------
set number "显示行号
set laststatus=2 "启用状态栏信息
set cmdheight=2 "设置命令行的高度为2,默认为1
set cursorline "突出显示当前行
" set guifont=YaHei_Consolas_Hybrid:h10 "设置字体:字号(字体名称空格用下划线代替)
set nowrap "设置不自动换行
set shortmess=atI "去掉欢迎界面
" 设置 gVim 窗口初始位置及大小
if g:isGUI
" au GUIEnter * simalt ~x "窗口启动时自动最大化
winpos 100 10 "指定窗口出现的位置,坐标原点在屏幕左上角
set lines=38 columns=120 "指定窗口大小,lines为高度,columns为宽度
endif
" 设置代码配色方案
if g:isGUI
colorscheme Tomorrow-Night-Eighties "Gvim配色方案
else
colorscheme Tomorrow-Night-Eighties "终端配色方案
endif
" 显示/隐藏菜单栏、工具栏、滚动条,可用 Ctrl + F11 切换
if g:isGUI
set guioptions-=m
set guioptions-=T
set guioptions-=r
set guioptions-=L
nmap <silent> <c-F11> :if &guioptions =~# 'm' <Bar>
\set guioptions-=m <Bar>
\set guioptions-=T <Bar>
\set guioptions-=r <Bar>
\set guioptions-=L <Bar>
\else <Bar>
\set guioptions+=m <Bar>
\set guioptions+=T <Bar>
\set guioptions+=r <Bar>
\set guioptions+=L <Bar>
\endif<CR>
endif
" -----------------------------------------------------------------------------
" < 编译、链接、运行配置 (目前只配置了C、C++、Java语言)>
" -----------------------------------------------------------------------------
" F9 一键保存、编译、链接存并运行
nmap <F9> :call Run()<CR>
imap <F9> <ESC>:call Run()<CR>
" Ctrl + F9 一键保存并编译
nmap <c-F9> :call Compile()<CR>
imap <c-F9> <ESC>:call Compile()<CR>
" Ctrl + F10 一键保存并链接
nmap <c-F10> :call Link()<CR>
imap <c-F10> <ESC>:call Link()<CR>
let s:LastShellReturn_C = 0
let s:LastShellReturn_L = 0
let s:ShowWarning = 1
let s:Obj_Extension = '.o'
let s:Exe_Extension = '.exe'
let s:Class_Extension = '.class'
let s:Sou_Error = 0
let s:windows_CFlags = 'gcc\ -fexec-charset=gbk\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'
let s:linux_CFlags = 'gcc\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'
let s:windows_CPPFlags = 'g++\ -fexec-charset=gbk\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'
let s:linux_CPPFlags = 'g++\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'
let s:JavaFlags = 'javac\ %'
func! Compile()
exe ":ccl"
exe ":update"
let s:Sou_Error = 0
let s:LastShellReturn_C = 0
let Sou = expand("%:p")
let v:statusmsg = ''
if expand("%:e") == "c" || expand("%:e") == "cpp" || expand("%:e") == "cxx"
let Obj = expand("%:p:r").s:Obj_Extension
let Obj_Name = expand("%:p:t:r").s:Obj_Extension
if !filereadable(Obj) || (filereadable(Obj) && (getftime(Obj) < getftime(Sou)))
redraw!
if expand("%:e") == "c"
if g:iswindows
exe ":setlocal makeprg=".s:windows_CFlags
else
exe ":setlocal makeprg=".s:linux_CFlags
endif
echohl WarningMsg | echo " compiling..."
silent make
elseif expand("%:e") == "cpp" || expand("%:e") == "cxx"
if g:iswindows
exe ":setlocal makeprg=".s:windows_CPPFlags
else
exe ":setlocal makeprg=".s:linux_CPPFlags
endif
echohl WarningMsg | echo " compiling..."
silent make
endif
redraw!
if v:shell_error != 0
let s:LastShellReturn_C = v:shell_error
endif
if g:iswindows
if s:LastShellReturn_C != 0
exe ":bo cope"
echohl WarningMsg | echo " compilation failed"
else
if s:ShowWarning
exe ":bo cw"
endif
echohl WarningMsg | echo " compilation successful"
endif
else
if empty(v:statusmsg)
echohl WarningMsg | echo " compilation successful"
else
exe ":bo cope"
endif
endif
else
echohl WarningMsg | echo ""Obj_Name"is up to date"
endif
elseif expand("%:e") == "java"
let class = expand("%:p:r").s:Class_Extension
let class_Name = expand("%:p:t:r").s:Class_Extension
if !filereadable(class) || (filereadable(class) && (getftime(class) < getftime(Sou)))
redraw!
exe ":setlocal makeprg=".s:JavaFlags
echohl WarningMsg | echo " compiling..."
silent make
redraw!
if v:shell_error != 0
let s:LastShellReturn_C = v:shell_error
endif
if g:iswindows
if s:LastShellReturn_C != 0
exe ":bo cope"
echohl WarningMsg | echo " compilation failed"
else
if s:ShowWarning
exe ":bo cw"
endif
echohl WarningMsg | echo " compilation successful"
endif
else
if empty(v:statusmsg)
echohl WarningMsg | echo " compilation successful"
else
exe ":bo cope"
endif
endif
else
echohl WarningMsg | echo ""class_Name"is up to date"
endif
else
let s:Sou_Error = 1
echohl WarningMsg | echo " please choose the correct source file"
endif
exe ":setlocal makeprg=make"
endfunc
func! Link()
call Compile()
if s:Sou_Error || s:LastShellReturn_C != 0
return
endif
if expand("%:e") == "c" || expand("%:e") == "cpp" || expand("%:e") == "cxx"
let s:LastShellReturn_L = 0
let Sou = expand("%:p")
let Obj = expand("%:p:r").s:Obj_Extension
if g:iswindows
let Exe = expand("%:p:r").s:Exe_Extension
let Exe_Name = expand("%:p:t:r").s:Exe_Extension
else
let Exe = expand("%:p:r")
let Exe_Name = expand("%:p:t:r")
endif
let v:statusmsg = ''
if filereadable(Obj) && (getftime(Obj) >= getftime(Sou))
redraw!
if !executable(Exe) || (executable(Exe) && getftime(Exe) < getftime(Obj))
if expand("%:e") == "c"
setlocal makeprg=gcc\ -o\ %<\ %<.o
echohl WarningMsg | echo " linking..."
silent make
elseif expand("%:e") == "cpp" || expand("%:e") == "cxx"
setlocal makeprg=g++\ -o\ %<\ %<.o
echohl WarningMsg | echo " linking..."
silent make
endif
redraw!
if v:shell_error != 0
let s:LastShellReturn_L = v:shell_error
endif
if g:iswindows
if s:LastShellReturn_L != 0
exe ":bo cope"
echohl WarningMsg | echo " linking failed"
else
if s:ShowWarning
exe ":bo cw"
endif
echohl WarningMsg | echo " linking successful"
endif
else
if empty(v:statusmsg)
echohl WarningMsg | echo " linking successful"
else
exe ":bo cope"
endif
endif
else
echohl WarningMsg | echo ""Exe_Name"is up to date"
endif
endif
setlocal makeprg=make
elseif expand("%:e") == "java"
return
endif
endfunc
func! Run()
let s:ShowWarning = 0
call Link()
let s:ShowWarning = 1
if s:Sou_Error || s:LastShellReturn_C != 0 || s:LastShellReturn_L != 0
return
endif
let Sou = expand("%:p")
if expand("%:e") == "c" || expand("%:e") == "cpp" || expand("%:e") == "cxx"
let Obj = expand("%:p:r").s:Obj_Extension
if g:iswindows
let Exe = expand("%:p:r").s:Exe_Extension
else
let Exe = expand("%:p:r")
endif
if executable(Exe) && getftime(Exe) >= getftime(Obj) && getftime(Obj) >= getftime(Sou)
redraw!
echohl WarningMsg | echo " running..."
if g:iswindows
exe ":!%<.exe"
else
if g:isGUI
exe ":!gnome-terminal -x bash -c './%<; echo; echo 请按 Enter 键继续; read'"
else
exe ":!clear; ./%<"
endif
endif
redraw!
echohl WarningMsg | echo " running finish"
endif
elseif expand("%:e") == "java"
let class = expand("%:p:r").s:Class_Extension
if getftime(class) >= getftime(Sou)
redraw!
echohl WarningMsg | echo " running..."
if g:iswindows
exe ":!java %<"
else
if g:isGUI
exe ":!gnome-terminal -x bash -c 'java %<; echo; echo 请按 Enter 键继续; read'"
else
exe ":!clear; java %<"
endif
endif
redraw!
echohl WarningMsg | echo " running finish"
endif
endif
endfunc
" -----------------------------------------------------------------------------
" < 在浏览器中预览 Html 或 PHP 文件 >
" -----------------------------------------------------------------------------
" 修改前请先通读此模块,明白了再改以免错误
" F5 加浏览器名称缩写调用浏览器预览,启用前先肯定有安装相应浏览器,并在下面的配置好其安装目录
if g:iswindows
"如下为只支持Windows系统的浏览器
" 调用系统IE浏览器预览,若是已卸载可将其注释
nmap <F5>ie :call ViewInBrowser("ie")<cr>
imap <F5>ie <ESC>:call ViewInBrowser("ie")<cr>
" 调用IETester(IE测试工具)预览,若是有安装可取消注释
" nmap <F5>ie6 :call ViewInBrowser("ie6")<cr>
" imap <F5>ie6 <ESC>:call ViewInBrowser("ie6")<cr>
" nmap <F5>ie7 :call ViewInBrowser("ie7")<cr>
" imap <F5>ie7 <ESC>:call ViewInBrowser("ie7")<cr>
" nmap <F5>ie8 :call ViewInBrowser("ie8")<cr>
" imap <F5>ie8 <ESC>:call ViewInBrowser("ie8")<cr>
" nmap <F5>ie9 :call ViewInBrowser("ie9")<cr>
" imap <F5>ie9 <ESC>:call ViewInBrowser("ie9")<cr>
" nmap <F5>ie10 :call ViewInBrowser("ie10")<cr>
" imap <F5>ie10 <ESC>:call ViewInBrowser("ie10")<cr>
" nmap <F5>iea :call ViewInBrowser("iea")<cr>
" imap <F5>iea <ESC>:call ViewInBrowser("iea")<cr>
elseif g:islinux
"如下为只支持Linux系统的浏览器
"暂未配置,待有时间再弄了
endif
"如下为支持Windows与Linux系统的浏览器
" 调用Firefox浏览器预览,若是有安装可取消注释
" nmap <F5>ff :call ViewInBrowser("ff")<cr>
" imap <F5>ff <ESC>:call ViewInBrowser("ff")<cr>
" 调用Maxthon(遨游)浏览器预览,若是有安装可取消注释
" nmap <F5>ay :call ViewInBrowser("ay")<cr>
" imap <F5>ay <ESC>:call ViewInBrowser("ay")<cr>
" 调用Opera浏览器预览,若是有安装可取消注释
" nmap <F5>op :call ViewInBrowser("op")<cr>
" imap <F5>op <ESC>:call ViewInBrowser("op")<cr>
" 调用Chrome浏览器预览,若是有安装可取消注释
" nmap <F5>cr :call ViewInBrowser("cr")<cr>
" imap <F5>cr <ESC>:call ViewInBrowser("cr")<cr>
" 浏览器调用函数
function! ViewInBrowser(name)
if expand("%:e") == "php" || expand("%:e") == "html"
exe ":update"
if g:iswindows
"获取要预览的文件路径,并将路径中的'\'替换为'/',同时将路径文字的编码转换为gbk(同cp936)
let file = iconv(substitute(expand("%:p"), '\', '/', "g"), "utf-8", "gbk")
"浏览器路径设置,路径中使用'/'斜杠,更改路径请更改双引号里的内容
"下面只启用了系统IE浏览器,如需启用其它的可将其取消注释(得先安装,并配置好安装路径),也可按需增减
let SystemIE = "C:/progra~1/intern~1/iexplore.exe" "系统自带IE目录
" let IETester = "F:/IETester/IETester.exe" "IETester程序目录(可按实际更改)
" let Chrome = "F:/Chrome/Chrome.exe" "Chrome程序目录(可按实际更改)
" let Firefox = "F:/Firefox/Firefox.exe" "Firefox程序目录(可按实际更改)
" let Opera = "F:/Opera/opera.exe" "Opera程序目录(可按实际更改)
" let Maxthon = "C:/Progra~2/Maxthon/Bin/Maxthon.exe" "Maxthon程序目录(可按实际更改)
"本地虚拟服务器设置,我测试的是phpStudy2014,可根据本身的修改,更改路径请更改双引号里的内容
let htdocs ="F:/phpStudy2014/WWW/" "虚拟服务器地址或目录(可按实际更改)
let url = "localhost" "虚拟服务器网址(可按实际更改)
elseif g:islinux
"暂时尚未配置,有时间再弄了。
endif
"浏览器调用缩写,可根据实际增减,注意,上面浏览器路径中没有定义过的变量(等号右边为变量)不能出如今下面哟(可将其注释或删除)
let l:browsers = {} "定义缩写字典变量,此行不能删除或注释
" let l:browsers["cr"] = Chrome "Chrome浏览器缩写
" let l:browsers["ff"] = Firefox "Firefox浏览器缩写
" let l:browsers["op"] = Opera "Opera浏览器缩写
" let l:browsers["ay"] = Maxthon "遨游浏览器缩写
let l:browsers["ie"] = SystemIE "系统IE浏览器缩写
" let l:browsers["ie6"] = IETester."-ie6" "调用IETESTER工具以IE6预览缩写(变量加参数)
" let l:browsers["ie7"] = IETester."-ie7" "调用IETESTER工具以IE7预览缩写(变量加参数)
" let l:browsers["ie8"] = IETester."-ie8" "调用IETESTER工具以IE8预览缩写(变量加参数)
" let l:browsers["ie9"] = IETester."-ie9" "调用IETESTER工具以IE9预览缩写(变量加参数)
" let l:browsers["ie10"] = IETester."-ie10" "调用IETESTER工具以IE10预览缩写(变量加参数)
" let l:browsers["iea"] = IETester."-al" "调用IETESTER工具以支持的全部IE版本预览缩写(变量加参数)
if stridx(file, htdocs) == -1 "文件不在本地虚拟服务器目录,则直接预览(但不能解析PHP文件)
exec ":silent !start ". l:browsers[a:name] ." file://" . file
else "文件在本地虚拟服务器目录,则调用本地虚拟服务器解析预览(先启动本地虚拟服务器)
let file = substitute(file, htdocs, "http://".url."/", "g") "转换文件路径为虚拟服务器网址路径
exec ":silent !start ". l:browsers[a:name] file
endif
else
echohl WarningMsg | echo " please choose the correct source file"
endif
endfunction
" -----------------------------------------------------------------------------
" < 其它配置 >
" -----------------------------------------------------------------------------
set writebackup "保存文件前创建备份,保存成功后删除该备份
set nobackup "设置无备份文件
" set noswapfile "设置无临时文件
" set vb t_vb= "关闭提示音
" =============================================================================
" << 如下为经常使用插件配置 >>
" =============================================================================
" -----------------------------------------------------------------------------
" < a.vim 插件配置 >
" -----------------------------------------------------------------------------
" 用于切换C/C++头文件
" :A ---切换头文件并独占整个窗口
" :AV ---切换头文件并垂直分割窗口
" :AS ---切换头文件并水平分割窗口
" -----------------------------------------------------------------------------
" < Align 插件配置 >
" -----------------------------------------------------------------------------
" 一个对齐的插件,用来——排版与对齐代码,功能强大,不过用到的机会很少
" -----------------------------------------------------------------------------
" < auto-pairs 插件配置 >
" -----------------------------------------------------------------------------
" 用于括号与引号自动补全,不过会与函数原型提示插件echofunc冲突
" 因此我就没有加入echofunc插件
" -----------------------------------------------------------------------------
" < BufExplorer 插件配置 >
" -----------------------------------------------------------------------------
" 快速轻松的在缓存中切换(至关于另外一种多个文件间的切换方式)
" <Leader>be 在当前窗口显示缓存列表并打开选定文件
" <Leader>bs 水平分割窗口显示缓存列表,并在缓存列表窗口中打开选定文件
" <Leader>bv 垂直分割窗口显示缓存列表,并在缓存列表窗口中打开选定文件
" -----------------------------------------------------------------------------
" < ccvext.vim 插件配置 >
" -----------------------------------------------------------------------------
" 用于对指定文件自动生成tags与cscope文件并链接
" 若是是Windows系统, 则生成的文件在源文件所在盘符根目录的.symbs目录下(如: X:\.symbs\)
" 若是是Linux系统, 则生成的文件在~/.symbs/目录下
" 具体用法可参考www.vim.org中此插件的说明
" <Leader>sy 自动生成tags与cscope文件并链接
" <Leader>sc 链接已存在的tags与cscope文件
" -----------------------------------------------------------------------------
" < cSyntaxAfter 插件配置 >
" -----------------------------------------------------------------------------
" 高亮括号与运算符等
au! BufRead,BufNewFile,BufEnter *.{c,cpp,h,java,javascript} call CSyntaxAfter()
" -----------------------------------------------------------------------------
" < ctrlp.vim 插件配置 >
" -----------------------------------------------------------------------------
" 一个全路径模糊文件,缓冲区,最近最多使用,... 检索插件;详细帮助见 :h ctrlp
" 常规模式下输入:Ctrl + p 调用插件
" -----------------------------------------------------------------------------
" < emmet-vim(前身为Zen coding) 插件配置 >
" -----------------------------------------------------------------------------
" HTML/CSS代码快速编写神器,详细帮助见 :h emmet.txt
" -----------------------------------------------------------------------------
" < indentLine 插件配置 >
" -----------------------------------------------------------------------------
" 用于显示对齐线,与 indent_guides 在显示方式上不一样,根据本身喜爱选择了
" 在终端上会有屏幕刷新的问题,这个问题能解决有更好了
" 开启/关闭对齐线
nmap <leader>il :IndentLinesToggle<CR>
" 设置Gvim的对齐线样式
if g:isGUI
let g:indentLine_char = "┊"
let g:indentLine_first_char = "┊"
endif
" 设置终端对齐线颜色,若是不喜欢能够将其注释掉采用默认颜色
let g:indentLine_color_term = 239
" 设置 GUI 对齐线颜色,若是不喜欢能够将其注释掉采用默认颜色
" let g:indentLine_color_gui = '#A4E57E'
" -----------------------------------------------------------------------------
" < vim-javacompleteex(也就是 javacomplete 加强版)插件配置 >
" -----------------------------------------------------------------------------
" java 补全插件
" -----------------------------------------------------------------------------
" < Mark--Karkat(也就是 Mark) 插件配置 >
" -----------------------------------------------------------------------------
" 给不一样的单词高亮,代表不一样的变量时颇有用,详细帮助见 :h mark.txt
" " -----------------------------------------------------------------------------
" " < MiniBufExplorer 插件配置 >
" " -----------------------------------------------------------------------------
" " 快速浏览和操做Buffer
" " 主要用于同时打开多个文件并相与切换
" " let g:miniBufExplMapWindowNavArrows = 1 "用Ctrl加方向键切换到上下左右的窗口中去
" let g:miniBufExplMapWindowNavVim = 1 "用<C-k,j,h,l>切换到上下左右的窗口中去
" let g:miniBufExplMapCTabSwitchBufs = 1 "功能加强(不过好像只有在Windows中才有用)
" " <C-Tab> 向前循环切换到每一个buffer上,并在但前窗口打开
" " <C-S-Tab> 向后循环切换到每一个buffer上,并在当前窗口打开
" 在不使用 MiniBufExplorer 插件时也可用<C-k,j,h,l>切换到上下左右的窗口中去
noremap <c-k> <c-w>k
noremap <c-j> <c-w>j
noremap <c-h> <c-w>h
noremap <c-l> <c-w>l
" -----------------------------------------------------------------------------
" < neocomplcache 插件配置 >
" -----------------------------------------------------------------------------
" 关键字补全、文件路径补全、tag补全等等,各类,很是好用,速度超快。
let g:neocomplcache_enable_at_startup = 1 "vim 启动时启用插件
" let g:neocomplcache_disable_auto_complete = 1 "不自动弹出补全列表
" 在弹出补全列表后用 <c-p> 或 <c-n> 进行上下选择效果比较好
" -----------------------------------------------------------------------------
" < nerdcommenter 插件配置 >
" -----------------------------------------------------------------------------
" 我主要用于C/C++代码注释(其它的也行)
" 如下为插件默认快捷键,其中的说明是以C/C++为例的,其它语言相似
" <Leader>ci 以每行一个 /* */ 注释选中行(选中区域所在行),再输入则取消注释
" <Leader>cm 以一个 /* */ 注释选中行(选中区域所在行),再输入则称重复注释
" <Leader>cc 以每行一个 /* */ 注释选中行或区域,再输入则称重复注释
" <Leader>cu 取消选中区域(行)的注释,选中区域(行)内至少有一个 /* */
" <Leader>ca 在/*...*/与//这两种注释方式中切换(其它语言可能不同了)
" <Leader>cA 行尾注释
let NERDSpaceDelims = 1 "在左注释符以后,右注释符以前留有空格
" -----------------------------------------------------------------------------
" < nerdtree 插件配置 >
" -----------------------------------------------------------------------------
" 有目录村结构的文件浏览插件
" 常规模式下输入 F2 调用插件
nmap <F2> :NERDTreeToggle<CR>
" -----------------------------------------------------------------------------
" < omnicppcomplete 插件配置 >
" -----------------------------------------------------------------------------
" 用于C/C++代码补全,这种补全主要针对命名空间、类、结构、共同体等进行补全,详细
" 说明能够参考帮助或网络教程等
" 使用前先执行以下 ctags 命令(本配置中能够直接使用 ccvext 插件来执行如下命令)
" ctags -R --c++-kinds=+p --fields=+iaS --extra=+q
" 我使用上面的参数生成标签后,对函数使用跳转时会出现多个选择
" 因此我就将--c++-kinds=+p参数给去掉了,若是大侠有什么其它解决方法但愿不要保留呀
set completeopt=menu "关闭预览窗口
" -----------------------------------------------------------------------------
" < powerline 插件配置 >
" -----------------------------------------------------------------------------
" 状态栏插件,更好的状态栏效果
" -----------------------------------------------------------------------------
" < repeat 插件配置 >
" -----------------------------------------------------------------------------
" 主要用"."命令来重复上次插件使用的命令
" -----------------------------------------------------------------------------
" < snipMate 插件配置 >
" -----------------------------------------------------------------------------
" 用于各类代码补全,这种补全是一种对代码中的词与代码块的缩写补全,详细用法能够参
" 考使用说明或网络教程等。不过有时候也会与 supertab 插件在补全时产生冲突,若是大
" 侠有什么其它解决方法但愿不要保留呀
" -----------------------------------------------------------------------------
" < SrcExpl 插件配置 >
" -----------------------------------------------------------------------------
" 加强源代码浏览,其功能就像Windows中的"Source Insight"
nmap <F3> :SrcExplToggle<CR> "打开/闭浏览窗口
" -----------------------------------------------------------------------------
" < std_c 插件配置 >
" -----------------------------------------------------------------------------
" 用于加强C语法高亮
" 启用 // 注视风格
let c_cpp_comments = 0
" -----------------------------------------------------------------------------
" < surround 插件配置 >
" -----------------------------------------------------------------------------
" 快速给单词/句子两边增长符号(包括html标签),缺点是不能用"."来重复命令
" 不过 repeat 插件能够解决这个问题,详细帮助见 :h surround.txt
" -----------------------------------------------------------------------------
" < Syntastic 插件配置 >
" -----------------------------------------------------------------------------
" 用于保存文件时查检语法
" -----------------------------------------------------------------------------
" < Tagbar 插件配置 >
" -----------------------------------------------------------------------------
" 相对 TagList 能更好的支持面向对象
" 常规模式下输入 tb 调用插件,若是有打开 TagList 窗口则先将其关闭
nmap tb :TlistClose<CR>:TagbarToggle<CR>
let g:tagbar_width=30 "设置窗口宽度
" let g:tagbar_left=1 "在左侧窗口中显示
" -----------------------------------------------------------------------------
" < TagList 插件配置 >
" -----------------------------------------------------------------------------
" 高效地浏览源码, 其功能就像vc中的workpace
" 那里面列出了当前文件中的全部宏,全局变量, 函数名等
" 常规模式下输入 tl 调用插件,若是有打开 Tagbar 窗口则先将其关闭
nmap tl :TagbarClose<CR>:Tlist<CR>
let Tlist_Show_One_File=1 "只显示当前文件的tags
" let Tlist_Enable_Fold_Column=0 "使taglist插件不显示左边的折叠行
let Tlist_Exit_OnlyWindow=1 "若是Taglist窗口是最后一个窗口则退出Vim
let Tlist_File_Fold_Auto_Close=1 "自动折叠
let Tlist_WinWidth=30 "设置窗口宽度
let Tlist_Use_Right_Window=1 "在右侧窗口中显示
" -----------------------------------------------------------------------------
" < txtbrowser 插件配置 >
" -----------------------------------------------------------------------------
" 用于文本文件生成标签与与语法高亮(调用TagList插件生成标签,若是能够)
au BufRead,BufNewFile *.txt setlocal ft=txt
" -----------------------------------------------------------------------------
" < ZoomWin 插件配置 >
" -----------------------------------------------------------------------------
" 用于分割窗口的最大化与还原
" 常规模式下按快捷键 <c-w>o 在最大化与还原间切换
" =============================================================================
" << 如下为经常使用工具配置 >>
" =============================================================================
" -----------------------------------------------------------------------------
" < cscope 工具配置 >
" -----------------------------------------------------------------------------
" 用Cscope本身的话说 - "你能够把它当作是超过频的ctags"
if has("cscope")
"设定可使用 quickfix 窗口来查看 cscope 结果
set cscopequickfix=s-,c-,d-,i-,t-,e-
"使支持用 Ctrl+] 和 Ctrl+t 快捷键在代码间跳转
set cscopetag
"若是你想反向搜索顺序设置为1
set csto=0
"在当前目录中添加任何数据库
if filereadable("cscope.out")
cs add cscope.out
"不然添加数据库环境中所指出的
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set cscopeverbose
"快捷键设置
nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-\>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>
endif
" -----------------------------------------------------------------------------
" < ctags 工具配置 >
" -----------------------------------------------------------------------------
" 对浏览代码很是的方便,能够在函数,变量之间跳转等
set tags=./tags; "向上级目录递归查找tags文件(好像只有在Windows下才有用)
" -----------------------------------------------------------------------------
" < gvimfullscreen 工具配置 > 请确保已安装了工具
" -----------------------------------------------------------------------------
" 用于 Windows Gvim 全屏窗口,可用 F11 切换
" 全屏后再隐藏菜单栏、工具栏、滚动条效果更好
if (g:iswindows && g:isGUI)
nmap <F11> <Esc>:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR>
endif
" -----------------------------------------------------------------------------
" < vimtweak 工具配置 > 请确保以已装了工具
" -----------------------------------------------------------------------------
" 这里只用于窗口透明与置顶
" 常规模式下 Ctrl + Up(上方向键) 增长不透明度,Ctrl + Down(下方向键) 减小不透明度,<Leader>t 窗口置顶与否切换
if (g:iswindows && g:isGUI)
let g:Current_Alpha = 255
let g:Top_Most = 0
func! Alpha_add()
let g:Current_Alpha = g:Current_Alpha + 10
if g:Current_Alpha > 255
let g:Current_Alpha = 255
endif
call libcallnr("vimtweak.dll","SetAlpha",g:Current_Alpha)
endfunc
func! Alpha_sub()
let g:Current_Alpha = g:Current_Alpha - 10
if g:Current_Alpha < 155
let g:Current_Alpha = 155
endif
call libcallnr("vimtweak.dll","SetAlpha",g:Current_Alpha)
endfunc
func! Top_window()
if g:Top_Most == 0
call libcallnr("vimtweak.dll","EnableTopMost",1)
let g:Top_Most = 1
else
call libcallnr("vimtweak.dll","EnableTopMost",0)
let g:Top_Most = 0
endif
endfunc
"快捷键设置
nmap <c-up> :call Alpha_add()<CR>
nmap <c-down> :call Alpha_sub()<CR>
nmap <leader>t :call Top_window()<CR>
endif
" =============================================================================
" << 如下为经常使用自动命令配置 >>
" =============================================================================
" 自动切换目录为当前编辑文件所在目录
au BufRead,BufNewFile,BufEnter * cd %:p:h
" =============================================================================
" << windows 下解决 Quickfix 乱码问题 >>
" =============================================================================
" windows 默认编码为 cp936,而 Gvim(Vim) 内部编码为 utf-8,因此经常输出为乱码
" 如下代码能够将编码为 cp936 的输出信息转换为 utf-8 编码,以解决输出乱码问题
" 但好像只对输出信息所有为中文才有满意的效果,若是输出信息是中英混合的,那可能
" 不成功,会形成其中一种语言乱码,输出信息所有为英文的好像不会乱码
" 若是输出信息为乱码的能够试一下下面的代码,若是不行就仍是给它注释掉
" if g:iswindows
" function QfMakeConv()
" let qflist = getqflist()
" for i in qflist
" let i.text = iconv(i.text, "cp936", "utf-8")
" endfor
" call setqflist(qflist)
" endfunction
" au QuickfixCmdPost make call QfMakeConv()
" endif
" =============================================================================
" << 其它 >>
" =============================================================================
" 注:上面配置中的"<Leader>"在本软件中设置为"\"键(引号里的反斜杠),如<Leader>t
" 指在常规模式下按"\"键加"t"键,这里不是同时按,而是先按"\"键后按"t"键,间隔在一
" 秒内,而<Leader>cs是先按"\"键再按"c"又再按"s"键;如要修改"<leader>"键,能够把
" 下面的设置取消注释,并修改双引号中的键为你想要的,如修改成逗号键。
" let mapleader = ","
" =============================================================================
" << 纠结 >>
" =============================================================================
" 代码高亮
colorscheme monokai
" 设置字体
set gfn=Microsoft_YaHei_Mono:h12:cGB2312
" 字典补全
set dictionary=$vim\dict.txt
" 一键编译代码
func CompileRun()
exec "w"
if &filetype == "python"
exec " !python % "
elseif &filetype == "html"
exec " !% "
elseif &filetype == "c"
exec " !gcc % -o %< "
exec " !%< "
endif
endfunc
map <F9> :call CompileRun()<CR>