"F1~F12快捷键映射
""{ { {
map :CCTreeLoadXRefDBFromDisk $CCTREE_DB
map :BufExplorer
nnoremap :A
map :TlistToggle
"map : LookupFile "插件中已映射
noremap :make
nnoremap :Grep
map :NERDTreeToggle
"消除每行后面的多余的空格
nmap :%s//s/+$//g :noh
"消除文件中的^M字符
nmap :%s/ //ge
"nmap mmHmn:%s/ //ge `nzt`m
"原noremap dm mmHmn:%s/ //ge `nzt`m
"mmHmn 解释 : 1.mm-->在当前行行mark m 2.H-->到该屏幕的最上面(home) 3.mn-->在最上面作标记make n
"`nzt`m 解释: 1.`n -->到标记n的位置 2.zt-->将当前行(即标记n)置顶 3.`m-->到标记m的位置
map :!ctags -R --c++-kinds=+p --fields=+ialS --extra=+q .
""}}}
"F1~F12快捷键映射
"非F1~F12快捷键
""{ { {
let mapleader=","
let g:mapleader=","
map svi :source ~/.vimrc
map evi :e! ~/.vimrc
nnoremap tr :Trans
vnoremap trv :TransV
"Quickfix 编译出错信息调试很有用
nmap cn :cn
nmap cp :cp
nmap cw :cw 10
"OmniTags.vim tags更新
map tl :OmniTagsLoad $MYTAGS_DB
map tu :OmniTagsUpdate *.c *.h
"fuzzyfinder.vim 模糊查找
map fb :FufBuffer
map ff :FufFile
map fd :FufDir
map fm :FufMruFile
map ft :FufTag
"map sb : set scrollbind
"map nsb : set noscrollbind
"nnoremap c : set cursorline! cursorcolumn!
"map ms :marks
"map dms :delm!
"noremap :FufTagWithCursorWord!
""}}}
"非F1~F12快捷键
"简单配置
"{ { {
"打开语法色彩
syntax enable
"打开语法色彩
"打开关键字色
syntax on
"打开关键字色
"侦测文件类型
filetype on
"侦测文件类型
"载入文件类型插件
filetype plugin on
"载入文件类型插件
"为特定文件类型载入相关缩进文件
filetype indent on
"为特定文件类型载入相关缩进文件
"设置VIM颜色主题 你可以借助插件scrollcolor.vim和color_sample_pack.vim来选择你喜爱的主题(150多个)(请参考下面插件)
"term 黑白终端的属性
"cterm 彩色终端的属性
"ctermfg 彩色终端的前景色
"ctermbg 彩色终端的背景色
"gui GUI 版本属性
"guifg GUI 版本的前景色
"guibg GUI 版本的背景色
colorscheme elflord "个人钟爱
"colorscheme morning
"colorscheme evening
"colorscheme desert
"设置VIM颜色主题 你可以借助插件scrollcolor.vim和color_sample_pack.vim来选择你喜爱的主题(150多个)(请参考下面插件)
"预览窗口,eg. ctr+w { 时的窗口大小
set previewheight=10
"预览窗口,eg. ctr+w { 时的窗口大小
"设置弹出菜单的高度
set pumheight=15
"设置弹出菜单的高度
"使用鼠标
set mouse=a
"使用鼠标
"autocmd
if has("autocmd")
autocmd BufEnter * :lchdir %:p:h
endif
"autocmd
"映射快捷键开始命令,缺省为'/'(已经移到上面)
"let mapleader=","
"let g:mapleader=","
"映射快捷键开始命令,缺省为'/'(已经移到上面)
"解决consle输出乱码
language messages zh_CN.utf-8
"解决consle输出乱码
"可用来改动补全时采用的方式
:set wildmode=list:full
"可用来改动补全时采用的方式
"可用来取得菜单式的匹配列表 高亮首个匹配
":set wildmenu "当set wildmode=list:full默认set wildmenu已启动, 但是set wildmode=longest:list时不启动
"可用来取得菜单式的匹配列表 高亮首个匹配
"修改一个文件后,自动进行备份,备份的文件名为原文件名加"~"后缀
"if has("vms")
" set nobackup
"else
" set backup "vim main.c 多出 main.c~文件用来保存打开前的原文件, 最后可用vimdiff main.c main.c~比较
"endif
"修改一个文件后,自动进行备份,备份的文件名为原文件名加"~"后缀
"写备份但关闭vim后自动删除
set writebackup
"set nowritebackup
"写备份但关闭vim后自动删除
"vi兼容开关
set nocp "当使用omni自动补全时,要设置
"vi兼容开关
"不使用swap文件
"set noswapfile
set swapfile
"不使用swap文件
"显示匹配的括号([{和}])
set showmatch
"显示匹配的括号([{和}])
"显示日期的缩写
iab xdate =strftime("%Y-%m-%d %H:%M:%S")
"显示日期的缩写
"关闭遇到错误时的声音提示
set noerrorbells
"关闭遇到错误时的声音提示
"不要闪烁
set novisualbell
"不要闪烁
"使用空格来替换tab
set expandtab
"set et
"使用空格来替换tab
"在vim编辑器下方显示命令
set showcmd
set cmdheight=1
"在vim编辑器下方显示命令
"当光标达到上端或下端时 翻滚的行数
set scrolljump =5
"当光标达到上端或下端时 翻滚的行数
"当光标达到水平极端时 移动的列数
set sidescroll =5
"当光标达到水平极端时 移动的列数
"当光标距离极端(上,下,左,右)多少时发生窗口滚动
set scrolloff =0
"当光标距离极端(上,下,左,右)多少时发生窗口滚动
"当使用vimdiff比较文件,相比较的比较文件同步滚动,但是splite分割窗口, 两个窗口也同步, 有时候挺有用的.
"set scrollbind
"set noscrollbind
"当使用vimdiff比较文件,相比较的比较文件同步滚动,但是splite分割窗口, 两个窗口也同步, 有时候挺有用的.
"将当前编辑文件的路径设置为当前路径
set autochdir
"将当前编辑文件的路径设置为当前路径
"自动读写相关
set autoread " read open files again when changed outside Vim ( 同步 )
set autowrite " write a modified buffer on each :next , ... ( 跳到另一个文件时,自动保存上个文件 )
set modified
"自动读写相关
"设置VIM行号
set nu
"set nonu
"设置VIM行号
"Tab 宽度
set ts=4
"Tab 宽度
"自动缩进的时候, 缩进尺寸
set sw=4
"自动缩进的时候, 缩进尺寸
"打开 VIM 的状态栏标尺
set ru
"打开 VIM 的状态栏标尺
"显示括号配对情况
set sm "smartmatch
"显示括号配对情况
" 开启新行时使用智能自动缩进
set smartindent
" 开启新行时使用智能自动缩进
" 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
set ignorecase smartcase
" 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
" 输入搜索内容时就显示搜索结果
set incsearch
" 输入搜索内容时就显示搜索结果
" 搜索时高亮显示被找到的文本
set hlsearch
" 搜索时高亮显示被找到的文本
"打开 C/C++ 风格的自动缩进 ( =a{ , gg=G 代码美化 )
set cin
"打开 C/C++ 风格的自动缩进 ( =a{ , gg=G 代码美化 )
"允许backspace和光标键跨越行边界 ( 不习惯 )
"set whichwrap+=<,>,h,l
"允许backspace和光标键跨越行边界 ( 不习惯 )
"内容多时,换行显示
"set wrap
set nowrap
"内容多时,换行显示
"启动的时候不显示那个援助乌干达儿童的提示
set shortmess=atI
"启动的时候不显示那个援助乌干达儿童的提示
"通过使用: commands命令,告诉我们文件的哪一行被改变过 ( 不习惯 )
"set report=0
"通过使用: commands命令,告诉我们文件的哪一行被改变过 ( 不习惯 )
"在被分割的窗口间显示空白,便于阅读 (没看到效果)
"stl:/ : 当前窗口状态栏显示'空格' ('/'转义字符)
"stlnc:- : 非当前窗口状态栏显示---
"vert:/| : 垂直分割线为|
"fold:- : 若设置折叠功能,折叠后显示---
set fillchars=stl:/ ,stlnc:-,vert:/|,fold:-,diff:-
"set fillchars=vert:/ ,stl:/ ,stlnc:/
"在被分割的窗口间显示空白,便于阅读 (没看到效果)
"带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
"带有如下符号的单词不要被换行分割
" 中文帮助
set helplang=cn
" 中文帮助
" 设定doc文档目录
let helptags=$VIMFILES.'/doc'
" 设定doc文档目录
" 保留历史记录
set history=500
" 保留历史记录
" 英文单词在换行时不被截断
set linebreak
" 英文单词在换行时不被截断
" 设置每行多少个字符自动换行,加上换行符
"set textwidth=80 "有时不爽
set textwidth=0 "总不换行
" 设置每行多少个字符自动换行,加上换行符
" 光标可以定位在没有实际字符的地方
"set ve=block
" 光标可以定位在没有实际字符的地方
" 短暂跳转到匹配括号的时
" set matchtime=2
" 短暂跳转到匹配括号的时
"多少个键被敲下后执行一次交换文件刷新
set updatecount=40 "设置敲入400个字符后执行
"多少个键被敲下后执行一次交换文件刷新
"交换文件刷新后的超时时间
set updatetime=50000 "50秒后刷新
":preserve "若设置的时间过长,该命令会手工的存入交换文件中.
"交换文件刷新后的超时时间
" When using make, where should it dump the file
set makeef=error.err
" When using make, where should it dump the file
"lz 如果设置本选项,执行宏,寄存器和其它不通过输入的命令时屏幕不会重画.另外,窗口标题的刷新也被推迟.要强迫刷新,使用:redraw.
"set lz "lazyredraw / 'lz' (缺省关闭)
set redraw=3000
"lz 如果设置本选项,执行宏,寄存器和其它不通过输入的命令时屏幕不会重画.另外,窗口标题的刷新也被推迟.要强迫刷新,使用:redraw.
"}}}
"简单配置
"Gui选项
"{ { {
if has("gui_running")
set guioptions-=m " 关闭菜单栏
set guioptions-=T " 关闭工具栏
set guioptions-=l " 关闭左边滚动条
set guioptions-=L " 关闭垂直分隔窗口左边滚动条
set guioptions-=r " 关闭右边滚动条
set guioptions-=R " 关闭垂直分隔窗口右边滚动条
set guifont=Monospace:12 "在Linux下设置字体的命令是:
set guicursor=a:blinkon0 "停止光标闪烁
set shell=/bin/bash
endif
"}}}
"Gui选项
"改变注释代码的颜色
"{ { {
hi Comment ctermfg=6
"改.c文件的c风格/* ... */注释为会灰白色
hi cComment ctermfg=LightBlue "DarkGray "DarkMagenta " guifg=Grey
"改.c文件的c++风格// ... 注释为彩色终端下为暗蓝灰色、GUI下为浅蓝色
hi cCommentL ctermfg=DarkGray "LightBlue " guifg=LightBlue
"以上可参看/usr/share/vim/vim72/syntax/c.vim中对cComment和cCommentL的定义
"}}}
"改变注释代码的颜色
"字符编码(多字节)
"{ { {
if has("multi_byte")
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,chinese,big5,latin1,cp936
endif
"}}}
"字符编码(多字节)
"设置C/C++语言的具体缩进方式 eg. switch case 缩进
""{ { {
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
"set cino=:4g2t0(sus
"set cino=:0g0t0(sus
" :0 -- switch 语句之下的 case 语句缩进 0 个空格
" g0 -- class,struct,等权限控制语句(public,protected,private)相对class,struct等所在的块缩进 0 个空格
" t0 -- 如果函数返回值与函数名不在同一行,则返回值缩进 0 个空格
" (sus - 当一对括号跨越多行时,其后的行缩进前面 sw 指定的距离
""}}}
"设置C/C++语言的具体缩进方式 eg. switch case 缩进
"C的编译和运行 " 不好用,推荐用cvim.zip插件, /rr(运行), /ra(带参数运行), /ro(输出到(buff, xterm, vim))
"{ { {
"func! CompileRunGcc()
" exec "w"
" exec "!gcc % -o %<"
" exec "! ./%<"
"endfunc
"}}}
"C的编译和运行 " 不好用,推荐用cvim.zip插件, /rr(运行), /ra(带参数运行), /ro(输出到(buff, xterm, vim))
"search 搜索 (visual mode)
""{ { {
"set hls " hlsearch :highlight search
"set is " incsearch :increase search
"set ic " ignorecase :ignore case when searching
"set scs " smartcase :if has upper case, ignore 'ignorecase' option
""map h *N " h to highlight all word the same to which under cursor (可以使用vim自带shift + *)
""
""basically you press * or # to search for the current selection !! Really useful
vnoremap * :call VisualSearch('f')
vnoremap # :call VisualSearch('b')
function! VisualSearch(direction) range
let l:saved_reg = @"
execute "normal! vgvy"
let l:pattern = escape(@", '///.*$^~[]')
let l:pattern = substitute(l:pattern, "/n$", "", "")
if a:direction == 'b'
execute "normal ?" . l:pattern . "^M"
else
execute "normal /" . l:pattern . "^M"
endif
let @/ = l:pattern
let @" = l:saved_reg
endfunction
"map :nohl " :press to clear hightlight search highlight
""}}}
"search 搜索 (visual mode)
"设置状态栏,可以显示当前文件, 字符编码, 时间等
"{ { {
"显示状态栏
set ruler
set laststatus=2
highlight statusline cterm=bold ctermfg=blue ctermbg=white
"显示状态栏
"
function! CurDir()
let curdir = substitute(getcwd(), $HOME, "~", "g")
return curdir
endfunction
function! CurTime()
let curtime = strftime("%m-%d %H:%M:%S")
return curtime
endfunction
"set statusline=[%n]/ %f%m%r%h/ /|/ / pwd:/ %{CurDir()}/ / /|%=/|/ %l,%c/ %p%%/ /|/ ascii=%b,hex=%b%{((&fenc==/"/")?/"/":/"/ /|/ /".&fenc)}/ /|/ %{$USER}/ @/ %{hostname()}/
"set statusline=[%n]/ %F%m%r%h/ /|/ / pwd:/ %{CurDir()}/ / /|%=/|/ %l,%c/ %p%%/ /|/ ascii=%b,hex=%B%{((&fenc==/"/")?/"/":/"/ /|/ /".&fenc)}/ /|
"使用%F就不需要使用自定义函数CurDir()
"set statusline=[%n]/ /|/ %F%m%r%h/ /|%=/|/ %l,%c/ %p%%/ /|/ ascii=%b,hex=%B%{((&fenc==/"/")?/"/":/"/ /|/ /".&fenc)}/ /|/ / %{CurTime()}/ /|
set statusline=[%n]/ /|/ %f%m%r%h/ /|%=/|/ %c/ /|/ ascii=%b,hex=%B%{((&fenc==/"/")?/"/":/"/ /|/ /".&fenc)}/ /|/ %{CurTime()}/ /|
"状态行显示内容
" %f 只显示名字不显示路径
" %F 当前文件名
" %m 当前文件修改状态
" %r 当前文件是否只读
" %Y 当前文件类型
" %{&fileformat} 当前文件编码
" %b 当前光标处字符的 ASCII 码值
" %B 当前光标处字符的十六进制值
" %l 当前光标行号
" %c 当前光标列号
" %V 当前光标虚拟列号 (根据字符所占字节数计算)
" %p 当前行占总行数的百分比
" %% 百分号
" %L 当前文件总行数
"}}}
"设置状态栏,可以显示当前文件, 字符编码, 时间等
"设置标题栏,可以显示文件名等
"{ { {
if has('title') && (has('gui_running') || &title)
set titlestring=
set titlestring+=%f/ "文件名
set titlestring+=%h%m%r%w "标记符
set titlestring+=/ -/ %{v:progname} "程序名
endif
"}}}
"设置标题栏,可以显示文件名等
"当前行(列)高亮显示
"{ { {
set cursorline
set cursorcolumn
" ctermfg : red(1) yellow(2) blue green grey brown cyan magenta 数字
"hi CursorLine term=reverse cterm=reverse ctermbg=darkred ctermfg=black guibg=blue guifg=white
"hi CursorLine term=none cterm=reverse ctermbg=Magenta ctermfg=DarkGray "guibg=blue guifg=white
"hi CursorLine term=none cterm=reverse ctermbg=Cyan ctermfg=DarkGray "guibg=blue guifg=white
"若你的背景是黑色且同时装了cctree.vim 这里设置最好将ctermbg=8 ctermfg=none 注释掉
hi CursorLine term=none cterm=underline "ctermbg=8 ctermfg=none "guibg=blue guifg=white
hi CursorColumn term=none cterm=bold ctermbg=none ctermfg=Magenta "guibg=darkgrey guifg=white
"nnoremap c : set cursorline! cursorcolumn!
"set cursorline
"au! Cursorhold * exe 'match CurrentLine //%' . line('.') . 'l.*/'
"set ut=100
"}}}
"当前行(列)高亮显示
"单行或多行注释 "也可以使用cvim.zip插件来完成注