""{{{
map
map
nnoremap
map
"map
noremap
nnoremap
map
"消除每行后面的多余的空格
nmap
"消除文件中的^M字符
nmap
"nmap
"原noremap
"mmHmn 解释 : 1.mm-->在当前行行mark m 2.H-->到该屏幕的最上面(home) 3.mn-->在最上面作标记make n
"`nzt`m 解释: 1.`n -->到标记n的位置 2.zt-->将当前行(即标记n)置顶 3.`m-->到标记m的位置
map
""}}}
"F1~F12快捷键映射
"非F1~F12快捷键
""{{{
let mapleader=","
let g:mapleader=","
map
map
nnoremap
vnoremap
"Quickfix 编译出错信息调试很有用
nmap
nmap
nmap
"OmniTags.vim tags更新
map
map
"fuzzyfinder.vim 模糊查找
map
map
map
map
map
"map
"map
"nnoremap
"map
"map
"noremap
""}}}
"非F1~F12快捷键
"简单配置
"{{{
"打开语法色彩
syntax enable
"打开语法色彩
"打开关键字色
syntax _disibledevent=>"预览窗口,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
"显示日期的缩写
"关闭遇到错误时的声音提示
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 _disibledevent=>"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
""
""basically you press * or # to search for the current selection !! Really useful
vnoremap
vnoremap
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
""}}}
"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
"set cursorline
"au! Cursorhold * exe 'match CurrentLine /\%' . line('.') . 'l.*/'
"set ut=100
"}}}
"当前行(列)高亮显示
"单行或多行注释 "也可以使用cvim.zip插件来完成注释(*.c文件) \cc ---> // \c* ---> /* */ \co ---> 取消
"{{{
" nmap
" "normal 模式下ctrl + C 快捷键
" imap
" "insert 模式下ctrl + C 快捷键
" vmap
" "visual 模式下ctrl + C 快捷键
" command! -nargs=0 Setcomment call s:SET_COMMENT()
" command! -nargs=0 SetcommentV call s:SET_COMMENTV()
"
" "非视图模式下所调用的函数
" function! s:SET_COMMENT()
" let lindex=line(".")
" let str=getline(lindex)
" "查看当前是否为注释行
" let CommentMsg=s:IsComment(str)
" call s:SET_COMMENTV_LINE(lindex,CommentMsg[1],CommentMsg[0])
" endfunction
"
" "视图模式下所调用的函数
" function! s:SET_COMMENTV()
" let lbeginindex=line("'<") "得到视图中的第一行的行数
" let lendindex=line("'>") "得到视图中的最后一行的行数
" let str=getline(lbeginindex)
" "查看当前是否为注释行
" let CommentMsg=s:IsComment(str)
" "为各行设置
" let i=lbeginindex
" while i<=lendindex
" call s:SET_COMMENTV_LINE(i,CommentMsg[1],CommentMsg[0])
" let i=i+1
" endwhile
" endfunction
"
" "设置注释
" "index:在第几行
" "pos:在第几列
" "comment_flag: 0:添加注释符 1:删除注释符
" function! s:SET_COMMENTV_LINE( index,pos, comment_flag )
" let poscur = [0, 0,0, 0]
" let poscur[1]=a:index
" let poscur[2]=a:pos+1
" call setpos(".",poscur) "设置光标的位置
"
" if a:comment_flag==0
" "插入//
" exec "normal! i//"
" else
" "删除//
" exec "normal! xx"
" endif
" endfunction
"
" "查看当前是否为注释行并返回相关信息
" "str:一行代码
" function! s:IsComment(str)
" let ret= [0, 0] "第一项为是否为注释行(0,1),第二项为要处理的列,
" let i=0
" let strlen=len(a:str)
" while i
" if !(a:str[i]==' ' || a:str[i] == ' ' )
" let ret[1]=i
" if a:str[i]=='/' && a:str[i+1]=='/'
" let ret[0]=1
" else
" let ret[0]=0
" endif
" return ret
" endif
" let i=i+1
" endwhile
" return [0,0] "空串处理
" endfunction
"}}}
"单行或多行注释 "也可以使用cvim.zip插件来完成注释(*.c文件) \cc ---> // \c* ---> /* */ \co ---> 取消
"vim折叠功能
""{{{
"折叠方式,可用选项 'foldmethod' 来设定折叠方式:set fdm=***
"有 6 种方法来选定折叠:
"manual 手工定义折叠
"indent 更多的缩进表示更高级别的折叠
"expr 用表达式来定义折叠
"syntax 用语法高亮来定义折叠
"diff 对没有更改的文本进行折叠
"marker 对文中的标志折叠
"常用的折叠快捷键
"zf 创建折叠 (marker 有效)
"zo 打开折叠
"zO 对所在范围内所有嵌套的折叠点展开
"zc 关闭当前折叠
"zC 对所在范围内所有嵌套的折叠点进行折叠
"[z 到当前打开的折叠的开始处。
"]z 到当前打开的折叠的末尾处。
"zM 关闭所有折叠 (我喜欢)
"zr 打开所有折叠
"zR 循环地打开所有折叠 (我喜欢)
"zE 删除所有折叠
"zd 删除当前折叠
"zD 循环删除 (Delete) 光标下的折叠,即嵌套删除折叠
"za 若当前打开则关闭,若当前关闭则打开 ( 这个就足够了)
"zA 循环地打开/关闭当前折叠
"zj 到下一折叠的开始处 ( 我喜欢 )
"zk 到上一折叠的末尾 ( 我喜欢 )
"set fdm=marker
"set foldmethod=indent
"要想在{ } 代码块中折叠,按空格键
"syntax 与 c.vim 中的 \cc 注释功能冲突
set fdm=marker
"关掉映射,经常带来麻烦
"nnoremap
"}}}
"vim折叠功能
"vim diff
""{{{
set diffexpr=MyDiff()
function! MyDiff()
let opt = ""
if &diffopt =~ "icase"
let opt = opt . "-i "
endif
if &diffopt =~ "iwhite"
let opt = opt . "-b "
endif
silent execute "!diff -a --binary " . opt . v:fname_in . " " . v:fname_new .
\ " > " . v:fname_out
endfunction
""}}}
"vim diff
"文件比较
""{{{
":vertical diffsplit FILE_RIGHT "与已打开的文件进行比较
"设置不同之处显示上下三行
set diffopt=context:3
"命令模式(ESC键进入):
"[c 跳转到下一个差异点
"]c 跳到上一个差异点
"dp 左边文件差异复制到右边文件(直接在键盘上行按下dp)
"do 右边文件差异复制到左边文件(直接在键盘上行按下do)
"zo 隐藏相同行
"zc 展开向同行
"u 撤销
"Ctrl+w 文件切换
"
":qa! 退出不保存
":wa 保存
":wqa 保存退出
":diffupdate 重新比较
""}}}
"文件比较
"单词列表匹配
"{{{
"ctrl+x ctrl+k
"apt-get install wordlist
set dictionary+=~/.vim/dict/wordlist.txt
"set cpt=.,b,t,k
set cpt=.,b,t
" . scan the current buffer ('wrapscan' is ignored)
" w scan buffers from other windows
" b scan other loaded buffers that are in the buffer list
" u scan the unloaded buffers that are in the buffer list
" U scan the buffers that are not in the buffer list
" k scan the files given with the 'dictionary' option
" kspell use the currently active spell checking |spell|
" k{dict} scan the file {dict}. Several "k" flags can be given,
" patterns are valid too. For example: >
" :set cpt=k/usr/dict/*,k~/spanish
" s scan the files given with the 'thesaurus' option
" s{tsr} scan the file {tsr}. Several "s" flags can be given, patterns
" are valid too.
" i scan current and included files
" d scan current and included files for defined name or macro
" |i_CTRL-X_CTRL-D|
" ] tag completion
" t same as "]"
"}}}
"单词列表匹配
"括号智能匹配 autoclose.vim
"{{{
"let g:AutoClosePairs={'(': ')', '{': '}', '[': ']', '"': '"', "'": "'"}
let g:AutoClosePairs={'{': '}'} "间接不使用,不习惯
"}}}
"括号智能匹配 autoclose.vim
"简单tab智能完成 使用实际的tab 需要shift+tab 可以使用插件SuperTab
"{{{
"ctrl + c 可以中断正在查找
"function! Smart_TabComplete()
" let line = getline('.') " curline
" let substr = strpart(line, -1, col('.')+1) " from start to cursor
" let substr = matchstr(substr, "[^ \t]*$") " word till cursor
" if (strlen(substr)==0) " nothing to match _disibledevent=>" let has_slash = match(substr, '\/') != -1 " position of slash, if any
" if (!has_period && !has_slash)
" return "\
" elseif ( has_slash )
" return "\
" else
" return "\
" endif
"endfunction
"inoremap
"}}}
"简单tab智能完成 使用实际的tab 需要shift+tab 可以使用插件SuperTab
"gf 命令 go file 到该文件去
"{{{
"set path+=/home/linux/u-boot-1.3.1/include/
"set path+=/usr/src/linux-headers-2.6.27-7/include/
"set path+=/usr/src/linux/include/
"}}}
"gf 命令 go file 到该文件去
"completeopt 弹出菜单 输入字母实现即时的过滤和匹配 ( 参考 neocomplcache )
""{{{
""关掉智能补全时的预览窗口 (Scratch)
"" menu 使用弹出菜单来显示可能的补全
"" longest 只插入匹配的最长公共文本
""set completeopt=menuone,menu,longest,preview
"filetype plugin indent _disibledevent=>set completeopt=menu,longest
""}}}
"completeopt 弹出菜单 输入字母实现即时的过滤和匹配 ( 参考 neocomplcache )
"----------------------
"利用 插件 丰富 功能
"----------------------
"{{{
"translate.vim 翻译插件(英->汉)
"{{{
"地址: http://www.vim.org/scripts/script.php?script_id=2996
"需要: apt-get install python
":Trans --> 翻译光标下的单词 上面有映射
":TransV --> 翻译选中块中的句子 上面有映射
"}}}
"translate.vim 翻译插件(英->汉)
"WinManager 插件 ( 不好用 )
""{{{
"let g:defaultExplorer=1
"let g:winManagerWindowLayout='FileExplorer|BufExplorer|TagList'
"let g:persistentBehaviour=0 "只剩一个窗口时, 退出vim.
"let g:winManagerWidth=80 "设置winmanager的宽度,默认为25
"nmap
"nmap
"nmap
""}}}
"WinManager 插件 ( 不好用 )
"NERD_commenter.vim : 1218 "可以使用cvim.zip, 但是这个觉到习惯一些
""{{{
let NERDSpaceDelims=1 " 让注释符与语句之间留一个空格
let NERDCompactSexyComs=1 " 多行注释时样子更好看
let NERD_c_alt_style=1
"Default mapping:
"[count],cc " 以行为单位进行注释.
" ,c
" ,cm " 一段为单位进行注释. ( 常用 )
" ,cs " 简洁美观式注释. ( 常用 , 可以嵌套注释,用,cu取消注释 )
" ,cy " Same as ,cc except that the commented line(s) are yanked first.
" ,c$ " 注释当前光标到行末的内容.
" ,cA " 在行末进行手动输入注释内容.
" ,ca " 切换注释方式(/**/ <--> //). ( 常用 )
" ,cl " Same cc, 左对齐.
" ,cb " Same cc, 两端对其.
" ,cu " Uncomments the selected line(s). ( 常用 )
"}}}
"NERD_commenter.vim : 1218 "可以使用cvim.zip, 但是这个觉到习惯一些
"F8单独切换打开NERD_tree ( F8 )
"{{{
"-----------------------------------------------------------------
" plugin - NERD_tree.vim 以树状方式浏览系统中的文件和目录
" :ERDtree 打开NERD_tree :NERDtreeClose 关闭NERD_tree
" o 打开关闭文件或者目录 t 在标签页中打开
" T 在后台标签页中打开 ! 执行此文件
" p 到上层目录 P 到根目录
" K 到第一个节点 J 到最后一个节点
" u 打开上层目录 m 显示文件系统菜单(添加、删除、移动操作)
" r 递归刷新当前目录 R 递归刷新当前根目录
"-----------------------------------------------------------------
let g:NERDChristmasTree = 1 "色彩显示
let g:NERDTreNERDShowHidden = 1 "显示隐藏文件
let g:NERDTreeWinPos = 'left' "窗口显示位置
let g:NERDTreeHighlightCursorline = 0 "高亮当前行
let g:NERDTreeWinSize = 40 "设置显示宽度
"nmap
"
" o.......打开所选文件或目录 ( 常用 )
" enter..............相当于o
" go......类似o, 但光标仍然停留在NERD_tree ( 常用 )
" t.......在新标签中打开所选文件
" T.......类似t, 但光标仍然停留在NERD_tree
" i.......在一个水平分割窗口中打开文件
" gi......类似i, 但光标仍然停留在NERD_tree
" s.......在一个垂直分割窗口中打开文件.......................|NERDTree-s|
" gs......类似s, 但光标仍然停留在NERD_tree
" O.......递归打开所选目录
" 鼠标双击.......相当于o, 没错支持鼠标的~!
""}}}
"F8单独切换打开NERD_tree ( F8 )
"bufexplorer插件 ( F2 )
"{{{
"map
",be 打开选择窗口 ','是前面mapleader设置的 ( F2 )
"r可以进行反向排序.
"d/D可以用来关闭文件.
"p可以用来显示/关闭绝对路径模式
"}}}
"bufexplorer插件 ( F2 )
"echofunc.vim 在命令行中显示函数信息 ( 不错 )
""{{{
"直接下载解压即可( tags 插件已包含相似功能, 没必要装此插件 )
"这个插件的功能需要 tags 文件的支持, 并且在创建 tags 文件的时候要加选项"--fields=+lS" : ctags -R --fields=+lS
let g:EchoFuncKeyPrev='
let g:EchoFuncKeyNext='
let g:EchoFuncLangsUsed = ["c","java","cpp"]
""}}}
"echofunc.vim 在命令行中显示函数信息 ( 不错 )
"code_complete.vim 函数参数提示 ctags -R --c-kinds=+p --fields=+S
""{{{
" 若已经有echofunc.vim 和 cvim.zip插件那此插件不需要.
" (1) 下载后放到plugin目录中
" (2) ctags -R --c-kinds=+p --fields=+S
" (3) 提示: 默认触发键tab 导致supertab插件可能不正常,从而影响neocomplcache自动补全(如果设置的话).
"let g:completekey = "
"( 插件越多 冲突越多 功能重复 一切从简 )
""}}}
"code_complete.vim 函数参数提示 ctags -R --c-kinds=+p --fields=+S
"DoxygenToolkit.vim 代码说明文档自动生成
""{{{
" (1) :DoxLic 生成license (不常使用)
" (2) :DoxAuthor 生成文件描述 (C程序等常使用,@file有用)
" (3) :Dox 生成函数注释 (很有用)
map
map
map
"注: 如果你同时安装了showmark.vim, 可能会给你带来不好的感觉, 因为DoxygenToolkit.vim中用了mark d, 解决方法:
" (方法1) 设置showmark插件
" let showmarks_include = "abcefghijklmnopqrstuvwxyzABCEFGHIJKLMNOPQRSTUVWXYZ" "将小d去掉, 左侧不会显示d了.
" (方法2)
" 1. 可以先修改DoxygenToolkit.vim, 将所有使用到的标记d替换成D
" :%s/mark\ d/mark\ D/g
" :%s/normal\ `d/normal\ `D/g
" 2. 设置showmark插件
" let showmarks_include = "abcdefghijklmnopqrstuvwxyzABCEFGHIJKLMNOPQRSTUVWXYZ" "将D去掉
" 对class struct enum union等结构类的成员变量的注释为 /**< 解释变量 */
" @class 文档化一个C++类
" @struct 文档化一个 C 结构
" @union 文档化一个联合
" @enum 文档化一个枚举
" @fn 文档化一个函数
" @var 文档化一个变量,类型转换,枚举值其中之一
" @def 文档化一个#define
" @typedef 文档化一个类型转换
"
" Shell 命令
" (x) doxygen 生成文档(这个命令需要安装 apt-get install doxgen )
" (1) doxygen -g "默认生成doxygen的配置文件Doxyfile, 你也可以指定 doxygen -g myfile
" (2) 编辑生成的配置文件 (配置文件采用
" * OUTPUT_DIRECTORY : 为生成的文档指定存放位置
" * INPUT : 指定源文件目录位置, 如有多个以空格分开
" * FILE_PATTERNS : 指定源文件扩展名 (eg .c,.cc,.cpp,.h )
" * RECURSIVE : 源代码层次结构嵌套设置, ( yes or no )
" * EXTRACT_ALL : 函数没有注释文档也要提取信息(即yes)
" * EXTRACT_PRIVATE : 设置为yes才会将私有信息提取
" * EXTRACT_STATIC : 设置为yes才会提取静态成员
" * 其他需要自己看
" (3) doxygen Doxyfile "运行
" Shell 命令
let g:DoxygenToolkit_blockHeader = "=== FUNCTION ======================================================================"
let g:DoxygenToolkit_authorName = "Michael"
let g:DoxygenToolkit_versionString = "1.0"
let g:DoxygenToolkit_briefTag_structName = "yes"
let g:DoxygenToolkit_briefTag_enumName = "yes"
let g:DoxygenToolkit_briefTag_funcName = "yes"
let g:DoxygenToolkit_paramTag_post = " <+Ctrl_j+>" "如果装了cvim.zip(最新版) ctrl+j 可以跳到下一个要输入的<+xxx+>地方
let g:doxygen_enhanced_color = 1
let g:DoxygenToolkit_blockFooter = "====================================================================================="
"let g:DoxygenToolkit_blockHeader = "--------------------------------------------------------------------------"
"let g:DoxygenToolkit_authorName = "Michael"
"let g:DoxygenToolkit_authorTag = "@Author "
"let g:DoxygenToolkit_dateTag = "@Date "
"let g:DoxygenToolkit_versionTag = "@Version "
"let g:DoxygenToolkit_fileTag = "@File "
"let g:DoxygenToolkit_briefTag_pre = "@Description "
"let g:DoxygenToolkit_paramTag_pre = "@Param "
"let g:DoxygenToolkit_paramTag_post = ":"
"let g:DoxygenToolkit_returnTag = "@Return "
"let g:DoxygenToolkit_throwTag_pre = "@Exception "
"let g:DoxygenToolkit_briefTag_funcName = "yes"
"let g:doxygen_enhanced_color = 1
"let g:DoxygenToolkit_blockFooter = "--------------------------------------------------------------------------"
""}}}
"DoxygenToolkit.vim 代码说明文档自动生成
":ConqueTerm bash
""{{{
" vim 中使用终端 : 可用于终端调试
""}}}
":ConqueTerm bash
"fencview.vim 对你打开的文件的编码自动识别
""{{{
"直接下载解压即可
let g:fencview_autodetect = 1
""}}}
"fencview.vim 对你打开的文件的编码自动识别
"F7 Grep.vim 查找字符插件
""{{{
" 将光标位置放到所要搜索的字符串上, 按F7, 默认搜索所有(*)类型文件
" nnoremap
" 直接放到plugin中.
""}}}
"F7 Grep.vim 查找字符插件
"FuzzyFinder fuf.vim模糊查找
""{{{
" 1.FuzzyFinder 下载:http://www.vim.org/scripts/script.php?script_id=1984
" 2.vim-l9.vim 下载: http://www.vim.org/scripts/script.php?script_id=3252 "FuzzyFinder依赖该插件
" 3.模式
" 1 |:FufBuffer| - Buffer mode (|fuf-buffer-mode|)
" 2 |:FufFile| - File mode (|fuf-file-mode|)
" 3 |:FufCoverageFile| - Coverage-File mode (|fuf-coveragefile-mode|)
" 4 |:FufDir| - Directory mode (|fuf-dir-mode|)
" 5 |:FufMruFile| - MRU-File mode (|fuf-mrufile-mode|)
" 6 |:FufMruCmd| - MRU-Command mode (|fuf-mrucmd-mode|)
" 7 |:FufBookmarkFile| - Bookmark-File mode (|fuf-bookmarkfile-mode|)
" 8 |:FufBookmarkDir| - Bookmark-Dir mode (|fuf-bookmarkdir-mode|)
" 9 |:FufTag| - Tag mode (|fuf-tag-mode|)
" 10 |:FufBufferTag| - Buffer-Tag mode (|fuf-buffertag-mode|)
" 11 |:FufTaggedFile| - Tagged-File mode (|fuf-taggedfile-mode|)
" 12 |:FufJumpList| - Jump-List mode (|fuf-jumplist-mode|)
" 13 |:FufChangeList| - Change-List mode (|fuf-changelist-mode|)
" 14 |:FufQuickfix| - Quickfix mode (|fuf-quickfix-mode|)
" 15 |:FufLine| - Line mode (|fuf-line-mode|)
" 16 |:FufHelp| - Help mode (|fuf-help-mode|)
" 4.介绍
"
"
"
"
let g:fuf_previewHeight = 1 "预览高度
let g:fuf_enumeratingLimit = 20 "符合条件的最多显示20个
let g:fuf_modesDisable = [] "打开查找最近文件模式
""}}}
"FuzzyFinder fuf.vim模糊查找
"
""{{{
"当使用了acp.vim ( autocomplpop.vim)时, 该插件好像有点问题. 不过还是可以使用
"echo "!_TAG_FILE_SORTED 2 /2=foldcase/"; find . -not -iregex '.*\.\(jar\|gif\|jpg\|class\|exe\|dll\|pdd\|sw[op]\|xls\|doc\|pdf\|zip\|tar\|ico\|ear\|war\|dat\).*' -type f -printf "%f\t%p\t1\n" | sort -f > ./filenametags
let g:LookupFile_MinPatLength = 2 "最少输入3个字符才开始查找
let g:LookupFile_PreserveLastPattern = 0 "不保存上次查找的字符串
let g:LookupFile_PreservePatternHistory = 1 "保存查找历史
let g:LookupFile_AlwaysAcceptFirst = 1 "回车打开第一个匹配项目
let g:LookupFile_AllowNewFiles = 0 "不允许创建不存在的文件
let g:LookupFile_SortMethod = "" "关闭对搜索结果的字母排序
let g:LookupFile_UpdateTime = 200
let g:LookupFile_AlwaysAcceptFirst = 1
let g:LookupFile_DefaultCmd = ':LUTags'
" Don't display binary files
let g:LookupFile_FileFilter = '\.class$\|\.o$\|\.obj$\|\.exe$\|\.jar$\|\.zip$\|\.war$\|\.ear$'
let g:LookupFile_TagExpr = string('/home/tags/filenametags')
"if filereadable("/home/tags/filenametags") "设置tag文件的名字
" let g:LookupFile_TagExpr ='"/home/tags/filenametags"'
"endif
"映射LookupFile为,lk
nmap
"映射LUBufs为,ll
nmap
"映射LUWalk为,lw
nmap
" lookup file with ignore case
function! LookupFile_IgnoreCaseFunc(pattern)
let _tags = &tags
try
let &tags = eval(g:LookupFile_TagExpr)
let newpattern = '\c' . a:pattern
let tags = taglist(newpattern)
catch
echohl ErrorMsg | echo "Exception: " . v:exception | echohl NONE
return ""
finally
let &tags = _tags
endtry
" Show the matches for what is typed so far.
let files = map(tags, 'v:val["filename"]')
return files
endfunction
let g:LookupFile_LookupFunc = 'LookupFile_IgnoreCaseFunc'
""}}}
"
"neocomplcache.vba 插件替代autocomplpop(acp.vim) omnicppcomplete.vim , 在使用acp.vim,OmniCppComplete.vim 你就被out.
""{{{
"-----------------------------------------------------------------
" plugin - NeoComplCache.vim 自动补全插件
" 1、使用缓存,自动补全时效率高;
" 2、生成的关键词列表准确;
" 3、支持下划线分割的关键词,如apple_boy_cat,就可以只输入a_b_c,然后补全;
" 4、支持驼峰格式匹配关键词,如AppleBoyCat,就可以只输入ABC,然后补全;
" 5、既可以像AutoComplPop那样在Vim中输入的同时自动弹出补全列表,又可以自定义快捷键手动触发;
" 6、支持从文件名和目录名中匹配补全条件;
" 7、对于程序源文件,支持从语言API中匹配补全条件;
"-----------------------------------------------------------------
" Disable AutoComplPop.
"set completeopt=menu,longest
let g:acp_enableAtStartup = 0
" Use neocomplcache.
let g:neocomplcache_enable_at_startup = 1
" Use smartcase.
let g:neocomplcache_enable_smart_case = 0
" Use camel case completion.
let g:neocomplcache_enable_camel_case_completion = 1 "支持驼峰格式匹配关键词
" Use underbar completion.
let g:neocomplcache_enable_underbar_completion = 1 "支持下划线分割的关键词
" Set minimum syntax keyword length.
let g:neocomplcache_min_syntax_length = 3
let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'
let g:neocomplcache_enable_auto_delimiter = 1
let g:neocomplcache_disable_auto_complete = 1 "设置NeoComplCache不自动弹出补全列表
let g:neocomplcache_enable_wildcard = 1
" Define dictionary.
let g:neocomplcache_dictionary_filetype_lists = {
\ 'default' : '',
\ 'vimshell' : $HOME.'/.vimshell_hist',
\ 'scheme' : $HOME.'/.gosh_completions',
\ }
" Define keyword.
if !exists('g:neocomplcache_keyword_patterns')
let g:neocomplcache_keyword_patterns = {}
endif
let g:neocomplcache_keyword_patterns['default'] = '\h\w*'
"
"let g:neocomplcache_enable_auto_select = 1
let g:neocomplcache_enable_caching_message=1 "显示启动进度
" Enable omni completion.
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
autocmd filetype cpp set omnifunc=omni#cpp#complete#main
"Enable heavy omni completion.
if !exists('g:neocomplcache_omni_patterns')
let g:neocomplcache_omni_patterns = {}
endif
let g:neocomplcache_omni_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::'
autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete
let g:neocomplcache_omni_patterns.php = '[^. \t]->\h\w*\|\h\w*::'
let g:neocomplcache_omni_patterns.c = '\%(\.\|->\)\h\w*'
let g:neocomplcache_omni_patterns.cpp = '\h\w*\%(\.\|->\)\h\w*\|\h\w*::'
"
"映射:
"inoremap
"inoremap
"inoremap
"inoremap
"inoremap
"inoremap
"inoremap
"
""}}}
"neocomplcache.vba 插件替代autocomplpop(acp.vim) omnicppcomplete.vim , 在使用acp.vim,OmniCppComplete.vim 你就被out.
"omnicppcomplete : c/c++ omni-completion with ctags database
""{{{
"
"推荐使用
" |
" |
" |
" |
" |
" |
" |
" |
" |
" |
" |
" |
" |
" |
" Ctrl+P 向前切换成员
" Ctrl+N 向后切换成员
" Ctrl+E 表示退出下拉窗口, 并退回到原来录入的文字
" Ctrl+Y 表示退出下拉窗口, 并接受当前选项
" Ctrl+X Ctrl+L 整行补全
" Ctrl+X Ctrl+N 根据当前文件里关键字补全
" Ctrl+X Ctrl+K 根据字典补全
" Ctrl+X Ctrl+T 根据同义词字典补全
" Ctrl+X Ctrl+I 根据头文件内关键字补全
" Ctrl+X Ctrl+] 根据标签补全
" Ctrl+X Ctrl+F 补全文件名
" Ctrl+X Ctrl+D 补全宏定义
" Ctrl+X Ctrl+V 补全vim命令
" Ctrl+X Ctrl+U 用户自定义补全方式
" Ctrl+X Ctrl+S 拼写建议
"
"set nocp "要关闭兼容 (上面已处理)
let omnicpp_namespacesearch = 1
let omnicpp_globalscopesearch = 1
let omnicpp_showaccess = 1
let omnicpp_showprototypeinabbr = 1 " show function parameters
let omnicpp_maycompletedot = 1 " autocomplete after .
let omnicpp_maycompletearrow = 1 " autocomplete after ->
let omnicpp_maycompletescope = 1 " autocomplete after ::
let omnicpp_defaultnamespaces = ["std", "_glibcxx_std"]
""automatically open and close the popup menu / preview window
"au cursormovedi,insertleave * if pumvisible() == 0|silent! pclose|endif
""set completeopt=menuone,menu,longest,preview
""自定义快捷键 ( 若使用neocomplcache插件: 已定义了下面很多映射 )
"inoremap
"inoremap
inoremap
inoremap
"inoremap
"inoremap
""上面的映射都是在插入模式下的映射,解释如下
""如果下拉菜单弹出,回车映射为接受当前所选项目,否则,仍映射为回车
""如果下拉菜单弹出,ctrl-j映射为在下拉菜单中向下翻页。否则映射为ctrl-x ctrl-o
""如果下拉菜单弹出,ctrl-k映射为在下拉菜单中向上翻页,否则仍映射为ctrl-k
""如果下拉菜单弹出,ctrl-u映射为ctrl-e,即停止补全,否则,仍映射为ctrl-u
""如果下拉菜单弹出,ctrl-p映射为在下拉菜单中表示上一项。
""如果下拉菜单弹出,ctrl-n映射为在下拉菜单中表示下一项。
"":set omnifunc ? 查看设置的补全插件
""}}}
"omnicppcomplete : c/c++ omni-completion with ctags database
"scrollcolor.vim 和 color_sample_pack.vim
"{{{
"1. 下载scrollcolor http://www.vim.org/scripts/script.php?script_id=1488
"2. 下载color sample pack http://www.vim.org/scripts/script.php?script_id=625
"3. 该网页是上面插件的主题样式参考图片 http://www.vi-improved.org/color_sampler_pack/
"4. 将插件放到正确的位置后打开一个文件命令模式:COLORSCROLL 上下键选择喜爱的主题
"}}}
"scrollcolor.vim 和 color_sample_pack.vim
"CCtree.Vim C Call-Tree Explorer 源码浏览工具 关系树 (赞)
""{{{
"1. 除了cscope ctags 程序的安装,还需安装强力胶 ccglue(ctags-cscope glue): http://sourceforge.net/projects/ccglue/files/src/
" (1) ./configure && make && make install
" (2) $ccglue -S cscope.out -o cctree.out 或 $ccglue -S cscope1.out cscope2.out -o cctree.out
" (3) :CCTreeLoadXRefDBFromDisk cctree.out
"2. 映射快捷键(上面F1) 其中$CCTREE_DB是环境变量,写在~/.bashrc中
" map
" eg.
" export CSCOPE_DB=/home/tags/cscope.out
" export CCTREE_DB=/home/tags/cctree.out
" export MYTAGS_DB=/home/tags/tags
" "注: 如果没有装ccglue ( 麻烦且快捷键不好设置,都用完了 )
" (1) map
" (2) map
" (3) map