vim---个人强大的IDE

一.vim 基础设置:

vim setting

设置

含义
syntax on语法高亮
set tabstop=4一个tab键4个字符
set softtabstop=4一个tab键缩进4个字符
set listchars=tab:>-,trail:-tab键用:>-表示 空格用:-表示
set list显示隐藏字符
autocmd FileType h,c,cpp set shiftwidth=4 | set expandtab文件类型为.h .c .cpp的每次缩进4个字符,且tab键用空格代替
set autoindent继承前一行的缩进
set nocompatible不使用vim的默认键盘布局
set smartindent智能对齐
set cindentC语言格式对齐
set aw自动写入
set cindent shiftwidth=4C语言格式缩进4个字符
set autoindent shiftwidth=4自动缩进,每次缩进4个字符
set ruler显示状态行
set nowrap不自动换行
set textwidth=120超过120个字符自动换行
au BufWinEnter * let w:m2=matchadd('Underlined', '\%>120v.\+', -1)超过120个字符部分带下划线
set cmdheight=2设置命令行的高度为2
set history=100  设置命令历史行数
set novisualbell不要闪烁
set backspace=2设置 Backspace 和 Delete 的灵活程度,backspace=2 则没有任何限制
set mouse=a

设置在哪些模式下使用鼠标功能:

n: 普通模式;

v: 可视模式;

i: 插入模式;

c: 命令行模式

h: 在帮助文件里,以上所有模式

a: 以上所有模式

r: 跳过|lit-enter|提示

A: 在可视模式下自动选择

:inoremap ( ()<ESC>i()自动补全
:inoremap [ []<ESC>i

[]自动补全

:inoremap { {<CR>}<ESC>i{}自动补全
:inoremap " ""<ESC>i“”自动补全
:inoremap ' ''<ESC>i‘’自动补全
:inoremap /* /**/<ESC>i/* */自动补全
" ---vim setting---
syntax on                                  "语法高亮
set tabstop=4                              "一个tab是4个字符
set softtabstop=4                          "按一次tab前进4个字符 
set listchars=tab:>-,trail:-
set list
autocmd FileType h,c,cpp set shiftwidth=4 | set expandtab

"设置自动缩进 
set autoindent                             "继承前一行的缩进
set nocompatible                           "不使用vi默认键盘布局
set smartindent                            "智能对齐
set cindent                                "C语言格式对齐
set ai!
set aw                                     "自动写入
"缩进的字符个数 
set cindent shiftwidth=4                   "c语言缩进4个字符
set autoindent shiftwidth=4                "智能缩进4个字符
set ruler                                  "显示状态行

set showcmd                                " 在状态栏显示目前所执行的指令,未完成的指令片段亦会显示
set showmatch                              " 高亮显示匹配的括号
set ignorecase                             " 搜索时忽略大小写
set smartcase                              " Do smart case matching
set incsearch                              " 在搜索时,输入的词句的字符高亮
set hlsearch                               " 高亮搜索的关键字 
set autowrite                              " Automatically save before commands like :next and :make
set hidden                                 " Hide buffers when they re abandoned
set nu                                     " 设置行号 
 
set mouse=nv                               " 设置在哪些模式下使用鼠标功能,mouse=a 表示所有模式 
set backspace=2                            " 设置 Backspace 和 Delete 的灵活程度,backspace=2 则没有任何限制
set nowrap                                 " 不自动换行 
set textwidth=120                          " 设置超过120字符自动换行
 
au BufWinEnter * let w:m2=matchadd('Underlined', '\%>120v.\+', -1) " 设置超过100列的字符带下划线
syn match out80 /\%80v./ containedin=ALL 
hi out80 guifg=white guibg=red 

set cmdheight=2                            " 设置命令行的高度
set history=100                            " 设置命令历史行数
set shortmess=atI                          " 启动的时候不显示那个援助索马里儿童的提示
set novisualbell                           " 不要闪烁
set confirm                                " 在处理未保存或只读文件时,弹出确认

" 括号等自动补全
:inoremap ( ()<ESC>i
:inoremap [ []<ESC>i
:inoremap { {<CR>}<ESC>i
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
:inoremap < <><ESC>i
:inoremap /* /**/<ESC>i

vim 基本操作:

vi-vim-cheat-sheet-sch

其它操作
操作分类行为说明
:split(简写 :sp)命令水平分屏
:vsplit(简写 :vsp)命令垂直分屏
g + d 快捷键高亮显示所有相同的单词
shift + *快捷键向下查找相同单词并高亮显示
shift + #快捷键向上查找相同单词并高亮显示
:noh命令取消高亮显示
:e  ./dir/xxx命令打开工作路径下dir目录下的xxx文件
:e **/xxx命令打开工作路径下的xxx文件, 自动寻找匹配
u快捷键撤消前一条命令的结果
U快捷键撤销行内命令
Ctrl + r 快捷键取消上一次撤销的结果
i快捷键在光标左侧插入正文
I快捷键在光标所在行的开头插入
a快捷键在光标右侧插入正文
A快捷键在光标所在行的末尾插入
o快捷键光标所在行的下一行增添新行
O快捷键在光标所在行的上一行增添新行
v快捷键选择字符
V快捷键选择光标所在行
p快捷键将剪切板的内容粘贴到光标的后面
P快捷键将剪切板的内容粘贴到光标的前面
y快捷键复制当前选择的内容到剪切板
yy快捷键复制光标所在行的内容到剪切板
nyy快捷键复制从光标所在行起的n行的内容到内存缓冲区
yw快捷键复制光标所在的单词到剪切板
Y快捷键复制光标所在行的内容到剪切板
x快捷键删除光标所在位置的字符
X快捷键删除光标所在位置左边的字符
d快捷键删除选择的内容
dd快捷键删除光标所在行的内容
ndd快捷键

删除光标所在行起的n行内容

D快捷键删除光标位置到行尾的内容
s快捷键删除光标所在的字符,并转入插入模式
S快捷键删除光标所在行的内容,并转入插入模式
r快捷键替换光标所在位置的字符
R快捷键从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”可以结束
~快捷键切换大小写
n快捷键查找下一处
N快捷键查找上一处
Ctrl+w+h快捷键切换到当前分屏的左边一屏
Ctrl+w+l快捷键切换到当前分屏的右边一屏
Ctrl+w+j 快捷键切换到当前分屏的下边一屏
Ctrl+w+k快捷键切换到当前分屏的上边一屏

二.vim插件管理

       welcome home : vim online

1.安装ctags与配置
1.1安装

在线安装:
  $sudo apt-get install exuberant-ctags
  $ ctags --help

离线安装:

  下载:Error : vim online
   将下载的ctags.vim文件拷贝至~/.vim/plugin 目录下

.2.配置

ctags setting

map <F4> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR> 

映射快捷键F4更新tags
imap <F4> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
set tags=tags | set tags+=./tags表示在当前工作目录下搜索tags文件
" ----ctags setting----
map <F4> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
imap <F4> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
set tags=tags
set tags+=./tags                           "表示在当前工作目录下搜索tags文件

1.3.常用命令

ctags 快捷键
操作分类行为说明
Ctrl+]快捷键跳到当前光标下单词的标签
Ctrl+O快捷键返回上一步
Ctrl+T快捷键返回上一步

2.管理vim插件——vim-addons
  $sudo apt-get install vim vim-scripts vim-doc
  $sudo vim-addons status         // 此命令可以查看系统已经安装的VIM插件状态
3.vim自动补全——omnicppcomplete
3.1安装

在线安装:
   $sudo vim-addons install omnicppcomplete

离线安装:

  下载:Error : vim online

   加压后会有三个文件夹:doc、autoload、after 将这三个文件夹下的东西全部拷贝至~/.vim下对应目录下
3.2配置

omnicppcomplete setting
imap <C-O> <C-X><C-O>按下Ctrl+O自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码;此处实际为 Ctrl+X+O 的映射为Ctrl+O
imap <C-L> <C-X><C-L>按下Ctrl+L根据头文件内关键字补全;此处实际为 Ctrl+X+L 的映射为Ctrl+L
set completeopt=menu,menuone关掉智能补全时的预览窗口
let OmniCpp_MayCompleteDot = 1autocomplete with .
let OmniCpp_MayCompleteArrow = 1autocomplete with ->
let OmniCpp_MayCompleteScope = 1autocomplete with ::
let OmniCpp_SelectFirstItem = 2select first item (but don't insert)
let OmniCpp_NamespaceSearch = 2search namespaces in this and included files
let OmniCpp_ShowPrototypeInAbbr = 1show function prototype in popup window
let OmniCpp_GlobalScopeSearch=1enable the global scope search
let OmniCpp_DisplayMode=1Class scope completion mode: always show all members
let OmniCpp_DefaultNamespaces=["std"]
let OmniCpp_ShowScopeInAbbr=1show scope in abbreviation and remove the last column
let OmniCpp_ShowAccess=1 
" -- omnicppcomplete setting --
" 以下自动补全代码映射快捷键,映射语句后不能有其他字符,包括tab;否则会自动补全一些乱码
imap <C-O> <C-X><C-O>
imap <C-I> <C-X><C-I>
imap <C-L> <C-X><C-L>
imap <C-N> <C-X><C-N>
imap <C-T> <C-X><C-T>
imap <C-T> <C-X><C-K>
imap <C-D> <C-X><C-D>

set completeopt=menu,menuone                        " 关掉智能补全时的预览窗口
let OmniCpp_MayCompleteDot = 1                      " autocomplete with .
let OmniCpp_MayCompleteArrow = 1                    " autocomplete with ->
let OmniCpp_MayCompleteScope = 1                    " autocomplete with ::
let OmniCpp_SelectFirstItem = 2                     " select first item (but don't insert)
let OmniCpp_NamespaceSearch = 2                     " search namespaces in this and included files
let OmniCpp_ShowPrototypeInAbbr = 1                 " show function prototype in popup window
let OmniCpp_GlobalScopeSearch=1                     " enable the global scope search
let OmniCpp_DisplayMode=1                           " Class scope completion mode: always show all members
"let OmniCpp_DefaultNamespaces=["std"]
let OmniCpp_ShowScopeInAbbr=1                       " show scope in abbreviation and remove the last column
let OmniCpp_ShowAccess=1

3.3使用
  使用下列命令生成tags文件,就可以 与OmniCppComplete配合运作:
      ctags -R --c++-kinds=+p --fields=+iaS --extra=+q 
           --c++-kinds=+p  // 为C++文件增加函数原型的标签
           --fields=+iaS      // 在标签文件中加入继承信息(i)、类成员的访问控制信息(a)、以及函数的指纹(S)
           --extra=+q          // 为标签增加类修饰符。注意,如果没有此选项,将不能对类成员补全

omnicppcomplete 常用快捷键
操作分类行为说明
Ctrl+P快捷键向前切换成员
Ctrl+N快捷键向后切换成员
Ctrl+E快捷键表示退出下拉窗口, 并退回到原来录入的文字
Ctrl+Y快捷键表示退出下拉窗口, 并接受当前选项
Ctrl+X+L快捷键整行补全.注:imap <C-L> <C-X><C-L>   // 使用映射,时Ctrl+X+L 简化为Ctrl+L
Ctrl+X+N快捷键根据当前文件里关键字补全
Ctrl+X+K快捷键根据字典补全
Ctrl+X+T快捷键根据同义词字典补全
Ctrl+X+I快捷键根据头文件内关键字补全
Ctrl+X+]快捷键根据标签补全
Ctrl+X+F快捷键补全文件名
Ctrl+X+D快捷键补全宏定义
Ctrl+X+V快捷键补全vim命令
Ctrl+X+U快捷键用户自定义补全方式
Ctrl+X+S快捷键拼写建议

4.标签浏览器Taglist
4.1安装

在线安装:
  $sudo vim-addons install taglist

离线安装:

  下载:http://www.vim.org/scripts/script.php?script_id=273
   解压后将- 文件夹plugin下的文件全部拷贝至 ~/.vim/plugin 目录下;

   将doc目录下的文件全部拷贝至~/.vim/doc 目录下
4.2配置

Taglist setting
let Tlist_Ctags_Cmd='ctags'因为我们放在环境变量里,所以可以直接执行
let Tlist_Use_Right_Window=1让窗口显示在右边,0的话就是显示在左边
let Tlist_Show_One_File=10:让taglist可以同时展示多个文件的函数列表,,1 : taglist 始终只显示当前文件
let Tlist_File_Fold_Auto_Close=1非当前文件,函数列表折叠隐藏
let Tlist_Exit_OnlyWindow=1当taglist是最后一个分割窗口时,自动推出vim
let Tlist_Process_File_Always=1实时更新tags
let Tlist_Inc_Winwidth=0
" ---Taglist setting---
let Tlist_Ctags_Cmd='ctags'                " 因为我们放在环境变量里,所以可以直接执行
let Tlist_Use_Right_Window=1               " 让窗口显示在右边,0的话就是显示在左边
let Tlist_Show_One_File=1                  " 0:让taglist可以同时展示多个文件的函数列表
let Tlist_File_Fold_Auto_Close=1           " 非当前文件,函数列表折叠隐藏
let Tlist_Exit_OnlyWindow=1                " 当taglist是最后一个分割窗口时,自动推出vim
let Tlist_Process_File_Always=1            " 实时更新tags
let Tlist_Inc_Winwidth=0

" 写入时自动更新Taglist
function! UpdateTlist()
    TlistUpdate
endfunction
autocmd BufWritePost *.c,*.h,*.cpp,*.S,*.sh call UpdateTlist()

5.buffer管理器MiniBufferExplorer
5.1安装

在线安装:
  $sudo vim-addons install minibufexplorer

离线安装:

   下载:http://www.vim.org/scripts/script.php?script_id=159
   将解压后的 minibufexpl.vim文件丢到 ~/.vim/plugin文件夹中即可
5.2配置

MiniBufferExplorer setting
let g:miniBufExplMapWindowNavVim = 0按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapWindowNavArrows = 1按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapCTabSwitchBufs = 1启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一个buffer并在当前窗口打开
let g:miniBufExplMapCTabSwitchWindows = 1启用以下两个功能:Ctrl+tab移到下一个窗口;Ctrl+Shift+tab移到上一个窗口
let g:miniBufExplModSelTarget = 1不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer
let g:miniBufExplorerMoreThanOne=00个以上的文件都显示该窗口,可以保证打开新文件时,其他窗口不主动调整
" -- MiniBufferExplorer --
"let g:miniBufExplMapWindowNavVim = 1               " 按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapWindowNavArrows = 1             " 按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapCTabSwitchBufs = 1              " 启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一个buffer并在当前窗口打开;ubuntu好像不支持
let g:miniBufExplMapCTabSwitchWindows = 1           " 启用以下两个功能:Ctrl+tab移到下一个窗口;Ctrl+Shift+tab移到上一个窗口;ubuntu好像不支持
let g:miniBufExplModSelTarget = 1                   " 不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer
let g:miniBufExplorerMoreThanOne = 0

5.3常用命令

MiniBufferExplorer 常用命令
操作分类行为说明
<Tab>快捷键移到上一个buffer
<Shift-Tab>快捷键移到下一个buffer
<Enter>快捷键打开光标所在的buffer

6 NERDTree

6.1 安装

6.1.1 安装NERDTree (纯净版)

    下载:Error : vim online

     安装:下载NREDTree 4.2.0版本(不要下载5.0.0 有bug),将解压的所有目录拷贝至 ~/.vim 目录下。

6.1.2 安装git-nerdtree (加强版)

    下载:GitHub - Xuyuanp/git-nerdtree: NERDTree with git status support (DEPRECATED)

     安装:cp -rf git-nerdtree-master/autoload git-nerdtree-master/doc  git-nerdtree-master/lib  ~/.vim/

               cp -rf git-nerdtree-master/nerdtree_plugin  git-nerdtree-master/plugin  git-nerdtree-master/syntax ~/.vim/

6.2 配置

NERDTree setting
let g:NERDTree_title="[NERDTree]"设置窗口标签
let g:NERDTreeWinPos='left'设置NERDTree 窗口显示在左边
let g:NERDTreeWinSize=28窗口大小
let g:NERDTreeShowLineNumbers=0显示行号
let g:NERDTreeShowHidden=0不显示隐藏文件
let g:NERDChristmasTree=1彩色化
let g:NERDTreeIgnore=['\.swp','\.out']忽略显示一下文件
" ----NERDTree setting----
let g:NERDTree_title="[NERDTree]"
let g:NERDTreeDirArrowExpandable = '+'         " 设置文件夹折叠时的图标为 '+'
let g:NERDTreeDirArrowCollapsible = '-'        " 设置文件夹展开时的图标为 '-'
let g:NERDTreeWinPos='left'                    " 设置NERDTree 窗口显示在左边
let g:NERDTreeWinSize=28                       " 窗口大小            
let g:NERDTreeShowLineNumbers=0                " 显示行号
let g:NERDTreeShowHidden=1                     " 不显示隐藏文件
let g:NERDChristmasTree=1
let g:NERDTreeIgnore=['\.swp','\.out']

" ----git nerdtree setting
let g:NERDTreeIndicatorMapCustom = {
    \ "Modified"  : "✹",
    \ "Staged"    : "✚",
    \ "Untracked" : "✭",
    \ "Renamed"   : "➜",
    \ "Unmerged"  : "═",
    \ "Deleted"   : "✖",
    \ "Dirty"     : "✗",
    \ "Clean"     : "✔︎",
    \ 'Ignored'   : '☒',
    \ "Unknown"   : "?"
    \ }

    使用Winmanager管理NERDTree和TagList还需要做一下修改:

    打开 ~/.vim/plugin/NERD_tree.vim  在该文件末尾插入一下代码:

function! NERDTree_Start()
    exec 'NERDTree'
endfunction

function! NERDTree_IsValid()
    return 1
endfunction

此时打开vim启动Winmanager时,会有一个空的buff打开,再打开 ~/.vim/plugin/winmanager.vim ,找到ToggleWindowsManager函数,并做如下修改:

function! <SID>ToggleWindowsManager()
    if IsWinManagerVisible()
        call s:CloseWindowsManager()
    else
        call s:StartWindowsManager()
        exe 'q'
    end
endfunction

7.文件浏览器和缓冲区管理器WinManager
7.1安装

在线安装:
  $sudo vim-addons install winmanager    // 文件浏览器和缓冲区管理器WinManager

离线安装:

   下载:http://www.vim.org/scripts/script.php?script_id=95
    解压后将- 文件夹plugin下的文件全部拷贝至 ~/.vim/plugin 目录下;

    将doc目录下的文件全部拷贝至~/.vim/doc 目录下
7.2配置

WinManager setting
let g:winManagerWindowLayout='FileExplorer|TagList'设置要WinManager管理的插件, FileExplorer和TagList,并为两者设置分割线
let g:persistentBehaviour=0如果所有编辑文件都关闭了,退出vim
nmap qw :WMToggle<cr> 映射qw为打开WinManage的快捷键
let g:winManagerWidth = 30设置WinManager的宽度,默认25
let g:AutoOpenWinManager = 1设置打开vim时自动打开WinManager,0: 默认不打开
let g:persistentBehaviour=0设置为0,否则打开后会有一个空buff打开
" ---WinManager setting---
let g:winManagerWindowLayout="NERDTree|TagList"     " 设置我们要管理的插件
let g:winManagerWidth = 30                          " 设置winManager的宽度,默认25
let g:AutoOpenWinManager = 0                        " 设置打开vim时,自动打开winManager
let g:persistentBehaviour=0                         " 如果所有编辑文件都关闭了,退出vim
nmap qw :WMToggle<cr>

7.3命令

WinManager 常见命令
操作分类行为说明
:WMToggle命令打开/关闭WinManage
<enter>或双击快捷键如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
<tab>快捷键如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件
<F5>快捷键刷新列表
-快捷键返回上一层目录
c快捷键使浏览目录成为vim当前工作目录
d快捷键创建目录
D快捷键删除当前光标下的目录或文件
i快捷键切换显示方式
R快捷键文件或目录重命名
s快捷键选择排序方式
r快捷键反向排序列表
x快捷键定制浏览方式, 使用你指定的程序打开该文件

8.代码折叠fold
8.1配置

fold setting
set foldmethod=syntax用语法高亮来定义折叠
set foldlevel=100启动vim时不要自动折叠代码
set foldcolumn=5设置折叠栏宽度
"--fold setting--
set foldmethod=syntax                               " 用语法高亮来定义折叠
set foldlevel=100                                   " 启动vim时不要自动折叠代码
set foldcolumn=5                                    " 设置折叠栏宽度

8.2常用命令

fold 常用命令
操作分类行为说明
za快捷键打开/关闭在光标下的折叠
zA快捷键循环地打开/关闭光标下的折叠
zo快捷键打开 (open) 在光标下的折叠
zO快捷键循环打开 (Open) 光标下的折叠
zc快捷键关闭 (close) 在光标下的折叠
zC快捷键循环关闭 (Close) 在光标下的所有折叠
zM快捷键关闭所有折叠
zR快捷键打开所有的折叠

9.项目目录数管理器Project

      Project插件是用来显示项目的目录树的,这个目录树是默认保存在~/.vimprojects文件中。
9.1安装
  $sudo vim-addons install project
9.2Project目录树可以通过下面的步骤生成:

Project 使用
:Project命令打开vim在命令模式下输入,在屏幕的最左边就会出现一个project框。不过因为没有初始化暂时是空的
\C快捷键

在命令模式下(不是插入模式)输入 :\C(大写的C),会出现下面这些信息:

  Enter the Name of the Entry: xxxx (输入项目名称)
  Enter the Absolute Directory to Load: /xxx/xxx/xxx (输入项目根目录的绝对路径)
  Enter the CD parameter: . (“.”为当前目录)或者和项目根目录一致
  Enter the File Filter: *.* (符合条件的源文件,可以是*.cpp/*.h等)

  PS:项目目录可以嵌套。而且更改之后在~/.vimprojects文件中就能看到内容,你可以手动进行更改。

10.quickfix命令集
     通过quickfix命令集,你可在 Vim 内编译程序并直接跳转到出错位置进行修正。你可以接着重新编译并做修正,直到不再出错为止。
10.1配置

QuickFix setting
map <F6> :make clean<CR><CR><CR> :copen<CR><CR>按下F6,执行make clear
map <F7> :make -j32<CR><CR><CR> :copen<CR><CR>按下F7,执行make -j32
map <F8> :cp<CR>按下F8,光标移到上一个错误所在的行
map <F9> :cn<CR>按下F9,光标移到下一个错误所在的行
imap <F6> <ESC>:make clear<CR><CR><CR>在插入模式下也可以使用该快捷键
imap <F7> <ESC>:make<CR><CR><CR> :copen<CR><CR>在插入模式下也可以使用该快捷键
imap <F8> <ESC>:cp<CR>在插入模式下也可以使用该快捷键
imap <F9> <ESC>:cn<CR>在插入模式下也可以使用该快捷键
"-- QuickFix setting --
map <F5> :make clear<CR><CR><CR> :copen<CR><CR>     " 按下F5,执行make clear
map <F6> :make<CR><CR><CR> :copen<CR><CR>           " 按下F6,执行make编译程序,并打开quickfix窗口,显示编译信息
map <F8> :cp<CR>                                    " 按下F8,光标移到上一个错误所在的行
map <F9> :cn<CR>                                    " 按下F9,光标移到下一个错误所在的行
" 以下的映射是使上面的快捷键在插入模式下也能用
imap <F7> <ESC>:make clear<CR><CR><CR> :copen<CR><CR>
imap <F8> <ESC>:make -j32<CR><CR><CR> :copen<CR><CR>
imap <F8> <ESC>:cp<CR>
imap <F9> <ESC>:cn<CR>

10.2使用

QuickFix 常用命令
操作分类行为说明
:help usr_30命令帮助文档
:help quickfix命令帮助文档
:make {arguments}命令下面的命令运行 "make" (包括你所给出的参数) 程序并捕捉其运行结果
如果编译时出现错误,按 <Enter>,回到vim界面,看不到出错信息了!这时,可以运行以下命令:
:cw[indow]命令打开quickfix窗口来查看出错信息,它会自动跳到第一处出错的地方。然后,你可以双击出错某一条出错信息,vim就会自动跳转到相应的出错位置
:cn[ext] 命令光标移到下一个错误所在的行
:cp[revious]命令光标移到上一个错误所在的行
:cfirst命令到第一处错误
:clast命令到最后一处错误
:cc命令空间不够时,Vim 会缩短出错信息。如果你想查看详细信息,可以使用此命令
:cl[ist]命令列出所有出错信息的概览(只有那些含有文件名或行数的错误信息会被显示)
:cl[ist]!命令列出所有出错信息的概览(查看那些并不含文件名或行数的信息)

11.SuperTab
11.1安装

在线安装:
  $sudo vim-addons install SuperTab

离线安装:

    下载:Error : vim online

    解压至任意目录,使用vim打开supertab.vmb文件,在vim下执行:so % 即可安装成功成功
11.2配置

" ---SuperTab setting---
let g:SuperTabDefaultCompletionType="context"

11.3使用
   只要在输入变量名或路径名等符号中途按Tab键,就能得到以前输入过的符号列表,并通过Tab键循环选择。

12.cscope安装
12.1 安装
    $ sudo apt-get install cscope
12.2 配置

cscope setting
set cscopequickfix=s-,c-,d-,i-,t-,e-  

cscopequickfix指定了是否使用quickfix窗口来显示cscope的结果。这是一组用逗号分隔的值。每项都包含于|csope-find|命令(s, g, d, c, t, e, f, 或者i)和旗标(+, -或者0)。

       ‘+’预示着显示结果必须追加到quickfix窗口。

       ‘-’隐含着清空先前的的显示结果,’0’或者不设置表示不使用quickfix窗口。查找会从开始直到第一条命令出现。默认的值是””(不使用quickfix窗口)。下面的值似乎会很有用:”s-,c-,d-,i-,t-,e-”。

set csprg=/usr/local/bin/cscopecscopeprg’指定了执行cscpoe的命令。默认是”cscope”
set csto=1  csto’的值决定了|:cstag|执行查找的顺序。假如’csto’被设置为0,那么cscope数据将会被优先查找,假如cscope没有返回匹配项,然后才会查找tag文件。反之,则查找顺序相反。默认值是0

set cst

set nocst

假如’cscopetag’被设置,然后诸如”:tag”和ctrl+]和”vim -t”等命令会始终使用|:cstag|而不是默认的:tag行为。通过设置’cst’,你将始终同时查找cscope数据库和tags文件。默认情况是关闭的

set csverb

set nocsverb

假如’cscopeverbose’没有被设置(默认情况是如此),那么当在增加一个cscope数据库时不会显示表示执行成功或失败的信息。理想情况是,在增加cscope数据库之前,你应该在你的|.vimrc|中重置此选项,在增加完之后,设置它。此后,当你在vim中增加更多的数据库时,你会得到(希望是有用的)信息展示数据库增加失败
set cspc=3cspc的值决定了一个文件的路径的多少部分被显示。默认值是0,所以整个路径都会被显示。值为1的话,那么就只会显示文件名,不带路径。其他值就会显示不同的部分
" ----cscope setting----
" set cscopequickfix=s-,c-,d-,i-,t-,e- " 设置了该选项,该选项内的所有opions的搜索结果只显示一个在quickfix中
if has("cscope")
  set csprg=/usr/bin/cscope
  set csto=1
  set cst
  set nocsverb
  " add any database in current directory
  if filereadable("cscope.out")
      cs add cscope.out
  endif
  set csverb
endif
map <F5> :!cscope -Rkqb<CR>  " 按F5刷新cscope
imap <F5> <ESC>:!cscope -Rkqb<CR>
" 其中 <C-@>s 表示 [Ctrl+空格] 后再按 s 键
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>

12.3 使用

cscope 常用命令

操作 分类 行为说明 $ cscope -Rkqb 命令

在项目的根目录下输入该命令,建立连接生成cscope.out文件

常用选项:

  • -R: 在生成索引文件时,搜索子目录树中的代码
  • -b: 只生成索引文件,不进入cscope的界面
  • -q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
  • -k: 在生成索引文件时,不搜索/usr/include目录
  • -i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用"-",表示由标准输入获得文件列表。
  • -Idir: 在-I选项指出的目录中查找头文件
  • -u: 扫描所有文件,重新生成交叉索引文件
  • -C: 在搜索时忽略大小写
  • -Ppath: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。

: cscope add xxx/cscope.out 命令 打vim, 执行改命令添加一个cscope数据库, add cscope.out文件所在的绝对路径

cscope 查找功能

:cscope find [options] flag

:cs f [options] flag

命令找到flag显示在当前窗口中

:scscope  find [options] flag

:scs  find [options] flag

命令找到flag显示在新的水平分割的窗口中

:vert scscope find [options] flag

:vert scs find [options] flag

命令找到flag显示在新的垂直分割的窗口中
:cs reset命令按F5后执行该命令,用于刷新索引

 常用options:

c

查找调用本函数的函数

d

查找本函数调用的函数
e查找egrep模式,相当于egrep功能,但查找速度快多了
f查找并打开文件,类似vim的find功能
g查找函数、宏、枚举等定义的位置,类似ctags的功能
i查找包含本文件的文件
s查找C语言符号,即查找函数名、宏、枚举值等出现的地方
t查找指定的字符串

:cs show 命令 显示所有cscope连接 :cs kill [pid] 命令

杀死id 号为pid的cscope连接

13 vim-gitgutter

13.1 安装

    下载:vim-gitgutter - Shows a git diff summary in the sign column and stages/reverts individual hunks. : vim online

     安装: tar -xvf vim-gitgutter.tgz -C ~/.vim/

13.2 配置

let g:gitgutter_max_signs = 800 
nmap ]h <Plug>GitGutterNextHunk   " 跳转到下一个 hunks    
nmap [h <Plug>GitGutterPrevHunk   " 跳转到上一个 hunks

14.vim-airline(底部状态栏增强插件)

14.1 安装

     下载:https://github.com/vim-airline/vim-airline

     解压后执行如下操作:

      cp -rf vim-airline/autoload  vim-airline/doc   vim-airline/plugin ~/.vim/

14.2 配置

set laststatus=2  "永远显示状态栏
set t_Co=256      "显示色彩

15 刷新设置

" F4 刷新标签
function! UpdateCtags()                    " 更新cscope 时自动更新ctags
    if filewritable("./cscope.out")
       !ctags -R --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --c++-kinds=+p --fields=+iaS --extra=+q
       TlistUpdate
       !cscope -Rkqb
       cs reset
    endif
endfunction
map <F4> :call UpdateCtags()<CR>
imap <F4> <ESC>:call UpdateCtags()<CR>

" 写入时自动刷新Tlist
function! UpdateTlist()
    TlistUpdate
endfunction
autocmd BufWritePost *.c,*.h,*.cpp,*.S,*.sh call UpdateTlist()

此刻即大功告成!!!

附件:

runtime! debian.vim


if has("syntax")
  syntax on
endif

" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")
  source /etc/vim/vimrc.local
endif

set t_Co=256
colorscheme ron  "delek  elflord koehler ron slate 

syntax on                                  "语法高亮
set tabstop=4                              "一个tab是4个字符
set softtabstop=4                          "按一次tab前进4个字符 
set listchars=tab:>-,trail:-
set list
autocmd FileType h,c,cpp set shiftwidth=4 | set expandtab

"设置自动缩进 
set autoindent                             "继承前一行的缩进
set nocompatible                           "不使用vi默认键盘布局
set smartindent                            "智能对齐
set cindent                                "C语言格式对齐
set ai!
set aw                                     "自动写入
"缩进的字符个数 
set cindent shiftwidth=4                   "c语言缩进4个字符
set autoindent shiftwidth=4                "智能缩进4个字符
set ruler                                  "显示状态行

set showcmd                                " 在状态栏显示目前所执行的指令,未完成的指令片段亦会显示
set showmatch                              " 高亮显示匹配的括号
set ignorecase                             " 搜索时忽略大小写
set smartcase                              " Do smart case matching
set incsearch                              " 在搜索时,输入的词句的字符高亮
"set nohlsearch                            " 不要高亮被搜索的句子
set hlsearch                               " 高亮搜索的关键字 
set autowrite                              " Automatically save before commands like :next and :make
set hidden                                 " Hide buffers when they re abandoned
set nu                                     " 设置行号 
 
set mouse=nv                               " 设置在哪些模式下使用鼠标功能
set backspace=2                            " 设置 Backspace 和 Delete 的灵活程度,backspace=2 则没有任何限制
set nowrap                                 " 不自动换行 
set textwidth=120                          " 设置超过120字符自动换行
 
au BufWinEnter * let w:m2=matchadd('Underlined', '\%>120v.\+', -1) " 设置超过100列的字符带下划线
syn match out80 /\%80v./ containedin=ALL 
hi out80 guifg=white guibg=red 

set cmdheight=2                            " 设置命令行的高度
set history=100                            " 设置命令历史行数
set shortmess=atI                          " 启动的时候不显示那个援助索马里儿童的提示
set novisualbell                           " 不要闪烁
set noswapfile                             " 不产生交换文件
" 括号等自动补全
:inoremap ( ()<ESC>i
:inoremap [ []<ESC>i
:inoremap { {<CR>}<ESC>i
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
:inoremap < <><ESC>i
:inoremap /* /**/<ESC>i

set confirm                                " 在处理未保存或只读文件时,弹出确认
"set cursorline                            " 行高亮  
"set cursorcolumn                          " 列高亮,与函数列表有冲突

"--ctags setting--
set tags=tags
set tags+=./tags                           "表示在当前工作目录下搜索tags文件

"-- Taglist setting --
let Tlist_Ctags_Cmd='ctags'                " 因为我们放在环境变量里,所以可以直接执行
let Tlist_Use_Right_Window=1               " 让窗口显示在右边,0的话就是显示在左边
let Tlist_Show_One_File=0                  " 让taglist可以同时展示多个文件的函数列表
let Tlist_File_Fold_Auto_Close=1           " 非当前文件,函数列表折叠隐藏
let Tlist_Exit_OnlyWindow=1                " 当taglist是最后一个分割窗口时,自动推出vim
let Tlist_Process_File_Always=1            " 实时更新tags
let Tlist_Inc_Winwidth=0

"-- WinManager setting --
let g:NERDTree_title="[NERDTree]"
let g:winManagerWindowLayout="NERDTree|TagList"
let g:winManagerWidth = 30                          " 设置winManager的宽度,默认25
let g:AutoOpenWinManager = 0                        " 设置打开vim时,自动打开winManager
let g:persistentBehaviour=0                         " 如果所有编辑文件都关闭了,退出vim
nmap qw :WMToggle<cr>

"-- QuickFix setting --
map <F8> :cp<CR>                                    " 按下F8,光标移到上一个错误所在的行
map <F9> :cn<CR>                                    " 按下F9,光标移到下一个错误所在的行
" 以下的映射是使上面的快捷键在插入模式下也能用
imap <F8> <ESC>:cp<CR>
imap <F9> <ESC>:cn<CR>

" -- MiniBufferExplorer --
"let g:miniBufExplMapWindowNavVim = 1               " 按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapWindowNavArrows = 1             " 按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapCTabSwitchBufs = 1              " 启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一个buffer并在当前窗口打开;ubuntu好像不支持
let g:miniBufExplMapCTabSwitchWindows = 1           " 启用以下两个功能:Ctrl+tab移到下一个窗口;Ctrl+Shift+tab移到上一个窗口;ubuntu好像不支持
let g:miniBufExplModSelTarget = 1                   " 不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer
let g:miniBufExplorerMoreThanOne = 0

"-- omnicppcomplete setting --
" 以下映射语句后面不要有任何其它东西,否则会补全一些其它的东西
" imap <C-O> <C-X><C-O>
" imap <C-I> <C-X><C-I>
" imap <C-L> <C-X><C-L>
" imap <C-N> <C-X><C-N>
" imap <C-T> <C-X><C-T>
" imap <C-T> <C-X><C-K>
" imap <C-D> <C-X><C-D>
set completeopt=menu,menuone                        " 关掉智能补全时的预览窗口
let OmniCpp_MayCompleteDot = 1                      " autocomplete with .
let OmniCpp_MayCompleteArrow = 1                    " autocomplete with ->
let OmniCpp_MayCompleteScope = 1                    " autocomplete with ::
let OmniCpp_SelectFirstItem = 2                     " select first item (but don't insert)
let OmniCpp_NamespaceSearch = 2                     " search namespaces in this and included files
let OmniCpp_ShowPrototypeInAbbr = 1                 " show function prototype in popup window
let OmniCpp_GlobalScopeSearch=1                     " enable the global scope search
let OmniCpp_DisplayMode=1                           " Class scope completion mode: always show all members
"let OmniCpp_DefaultNamespaces=["std"]
let OmniCpp_ShowScopeInAbbr=1                       " show scope in abbreviation and remove the last column
let OmniCpp_ShowAccess=1

"--fold setting--
set foldmethod=syntax                               " 用语法高亮来定义折叠
set foldlevel=100                                   " 启动vim时不要自动折叠代码
set foldcolumn=5                                    " 设置折叠栏宽度

"---SuperTab----
let g:SuperTabDefaultCompletionType="context"

" --------cscope setting -------
" set cscopequickfix=s-,c-,d-,i-,t-,e-
if has("cscope")
set csprg=/usr/bin/cscope
set csto=1
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
  cs add cscope.out
else
  set csverb
endif
endif
map <F5> :!cscope -Rkqb<CR>  " 按F5刷新cscope
imap <F5> <ESC>:!cscope -Rkqb<CR>

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>

" ---git setting---
let g:gitgutter_max_signs = 800 
nmap ]h <Plug>GitGutterNextHunk   " 跳转到下一个 hunks    
nmap [h <Plug>GitGutterPrevHunk   " 跳转到上一个 hunks

" 按下F4重新生成tag文件,并更新taglist
function! UpdateCtags()                    " 更新cscope 时自动更新ctags
    !find . -name "*.h" -o -name "*.c" -o -name "*.cc" -o -name "*.cpp" -o -name "*.java" > cscope.files 
    !cscope -Rkqb
    !ctags -R --file-scope=yes --langmap=c:+.h --languages=c,c++,python,java --links=yes --c-kinds=+cdefgmnpstuv --c++-kinds=+cdefgmnpstuv --java-kinds=+cefgmp --fields=+iaS --extra=+q
    TlistUpdate
    cs reset
endfunction
map <F4> :call UpdateCtags()<CR>
imap <F4> <ESC>:call UpdateCtags()<CR>

" 写入时自动更新Taglist
function! UpdateTlist()
    TlistUpdate
endfunction
autocmd BufWritePost *.c,*.h,*.cpp,*.S,*.java call UpdateTlist()

set laststatus=2  "永远显示状态栏
set t_Co=256      "显示色彩

配色方案:

" Vim color file
" ################ molokai.vim ###########
" 复制到文件,命名为 molokai.vim ,拷贝至vim/colors 目录下,
" 并在vimrc文件中添加:colorscheme solarized
" Author: Tomas Restrepo <tomas@winterdom.com>
" https://github.com/tomasr/molokai
"
" Note: Based on the Monokai theme for TextMate
" by Wimer Hazenberg and its darker variant
" by Hamish Stuart Macpherson
"

hi clear

if version > 580
    " no guarantees for version 5.8 and below, but this makes it stop
    " complaining
    hi clear
    if exists("syntax_on")
        syntax reset
    endif
endif
let g:colors_name="molokai"

if exists("g:molokai_original")
    let s:molokai_original = g:molokai_original
else
    let s:molokai_original = 0
endif


hi Boolean         guifg=#AE81FF
hi Character       guifg=#E6DB74
hi Number          guifg=#AE81FF
hi String          guifg=#E6DB74
hi Conditional     guifg=#F92672               gui=bold
hi Constant        guifg=#AE81FF               gui=bold
hi Cursor          guifg=#000000 guibg=#F8F8F0
hi iCursor         guifg=#000000 guibg=#F8F8F0
hi Debug           guifg=#BCA3A3               gui=bold
hi Define          guifg=#66D9EF
hi Delimiter       guifg=#8F8F8F
hi DiffAdd                       guibg=#13354A
hi DiffChange      guifg=#89807D guibg=#4C4745
hi DiffDelete      guifg=#960050 guibg=#1E0010
hi DiffText                      guibg=#4C4745 gui=italic,bold

hi Directory       guifg=#A6E22E               gui=bold
hi Error           guifg=#E6DB74 guibg=#1E0010
hi ErrorMsg        guifg=#F92672 guibg=#232526 gui=bold
hi Exception       guifg=#A6E22E               gui=bold
hi Float           guifg=#AE81FF
hi FoldColumn      guifg=#465457 guibg=#000000
hi Folded          guifg=#465457 guibg=#000000
hi Function        guifg=#A6E22E
hi Identifier      guifg=#FD971F
hi Ignore          guifg=#808080 guibg=bg
hi IncSearch       guifg=#C4BE89 guibg=#000000

hi Keyword         guifg=#F92672               gui=bold
hi Label           guifg=#E6DB74               gui=none
hi Macro           guifg=#C4BE89               gui=italic
hi SpecialKey      guifg=#66D9EF               gui=italic

hi MatchParen      guifg=#000000 guibg=#FD971F gui=bold
hi ModeMsg         guifg=#E6DB74
hi MoreMsg         guifg=#E6DB74
hi Operator        guifg=#F92672

" complete menu
hi Pmenu           guifg=#66D9EF guibg=#000000
hi PmenuSel                      guibg=#808080
hi PmenuSbar                     guibg=#080808
hi PmenuThumb      guifg=#66D9EF

hi PreCondit       guifg=#A6E22E               gui=bold
hi PreProc         guifg=#A6E22E
hi Question        guifg=#66D9EF
hi Repeat          guifg=#F92672               gui=bold
hi Search          guifg=#000000 guibg=#FFE792
" marks
hi SignColumn      guifg=#A6E22E guibg=#232526
hi SpecialChar     guifg=#F92672               gui=bold
hi SpecialComment  guifg=#7E8E91               gui=bold
hi Special         guifg=#66D9EF guibg=bg      gui=italic
if has("spell")
    hi SpellBad    guisp=#FF0000 gui=undercurl
    hi SpellCap    guisp=#7070F0 gui=undercurl
    hi SpellLocal  guisp=#70F0F0 gui=undercurl
    hi SpellRare   guisp=#FFFFFF gui=undercurl
endif
hi Statement       guifg=#F92672               gui=bold
hi StatusLine      guifg=#455354 guibg=fg
hi StatusLineNC    guifg=#808080 guibg=#080808
hi StorageClass    guifg=#FD971F               gui=italic
hi Structure       guifg=#66D9EF
hi Tag             guifg=#F92672               gui=italic
hi Title           guifg=#ef5939
hi Todo            guifg=#FFFFFF guibg=bg      gui=bold

hi Typedef         guifg=#66D9EF
hi Type            guifg=#66D9EF               gui=none
hi Underlined      guifg=#808080               gui=underline

hi VertSplit       guifg=#808080 guibg=#080808 gui=bold
hi VisualNOS                     guibg=#403D3D
hi Visual                        guibg=#403D3D
hi WarningMsg      guifg=#FFFFFF guibg=#333333 gui=bold
hi WildMenu        guifg=#66D9EF guibg=#000000

hi TabLineFill     guifg=#1B1D1E guibg=#1B1D1E
hi TabLine         guibg=#1B1D1E guifg=#808080 gui=none

if s:molokai_original == 1
   hi Normal          guifg=#F8F8F2 guibg=#272822
   hi Comment         guifg=#75715E
   hi CursorLine                    guibg=#3E3D32
   hi CursorLineNr    guifg=#FD971F               gui=none
   hi CursorColumn                  guibg=#3E3D32
   hi ColorColumn                   guibg=#3B3A32
   hi LineNr          guifg=#BCBCBC guibg=#3B3A32
   hi NonText         guifg=#75715E
   hi SpecialKey      guifg=#75715E
else
   hi Normal          guifg=#F8F8F2 guibg=#1B1D1E
   hi Comment         guifg=#7E8E91
   hi CursorLine                    guibg=#293739
   hi CursorLineNr    guifg=#FD971F               gui=none
   hi CursorColumn                  guibg=#293739
   hi ColorColumn                   guibg=#232526
   hi LineNr          guifg=#465457 guibg=#232526
   hi NonText         guifg=#465457
   hi SpecialKey      guifg=#465457
end

"
" Support for 256-color terminal
"
if &t_Co > 255
   if s:molokai_original == 1
      hi Normal                   ctermbg=234
      hi CursorLine               ctermbg=235   cterm=none
      hi CursorLineNr ctermfg=208               cterm=none
   else
      hi Normal       ctermfg=252 ctermbg=233
      hi CursorLine               ctermbg=234   cterm=none
      hi CursorLineNr ctermfg=208               cterm=none
   endif
   hi Boolean         ctermfg=135
   hi Character       ctermfg=144
   hi Number          ctermfg=135
   hi String          ctermfg=144
   hi Conditional     ctermfg=161               cterm=bold
   hi Constant        ctermfg=135               cterm=bold
   hi Cursor          ctermfg=16  ctermbg=253
   hi Debug           ctermfg=225               cterm=bold
   hi Define          ctermfg=81
   hi Delimiter       ctermfg=241

   hi DiffAdd                     ctermbg=24
   hi DiffChange      ctermfg=181 ctermbg=239
   hi DiffDelete      ctermfg=162 ctermbg=53
   hi DiffText                    ctermbg=102 cterm=bold

   hi Directory       ctermfg=118               cterm=bold
   hi Error           ctermfg=219 ctermbg=89
   hi ErrorMsg        ctermfg=199 ctermbg=16    cterm=bold
   hi Exception       ctermfg=118               cterm=bold
   hi Float           ctermfg=135
   hi FoldColumn      ctermfg=67  ctermbg=16
   hi Folded          ctermfg=67  ctermbg=16
   hi Function        ctermfg=118
   hi Identifier      ctermfg=208               cterm=none
   hi Ignore          ctermfg=244 ctermbg=232
   hi IncSearch       ctermfg=193 ctermbg=16

   hi keyword         ctermfg=161               cterm=bold
   hi Label           ctermfg=229               cterm=none
   hi Macro           ctermfg=193
   hi SpecialKey      ctermfg=81

   hi MatchParen      ctermfg=233  ctermbg=208 cterm=bold
   hi ModeMsg         ctermfg=229
   hi MoreMsg         ctermfg=229
   hi Operator        ctermfg=161

   " complete menu
   hi Pmenu           ctermfg=81  ctermbg=16
   hi PmenuSel        ctermfg=255 ctermbg=242
   hi PmenuSbar                   ctermbg=232
   hi PmenuThumb      ctermfg=81

   hi PreCondit       ctermfg=118               cterm=bold
   hi PreProc         ctermfg=118
   hi Question        ctermfg=81
   hi Repeat          ctermfg=161               cterm=bold
   hi Search          ctermfg=0   ctermbg=222   cterm=NONE

   " marks column
   hi SignColumn      ctermfg=118 ctermbg=235
   hi SpecialChar     ctermfg=161               cterm=bold
   hi SpecialComment  ctermfg=245               cterm=bold
   hi Special         ctermfg=81
   if has("spell")
       hi SpellBad                ctermbg=52
       hi SpellCap                ctermbg=17
       hi SpellLocal              ctermbg=17
       hi SpellRare  ctermfg=none ctermbg=none  cterm=reverse
   endif
   hi Statement       ctermfg=161               cterm=bold
   hi StatusLine      ctermfg=238 ctermbg=253
   hi StatusLineNC    ctermfg=244 ctermbg=232
   hi StorageClass    ctermfg=208
   hi Structure       ctermfg=81
   hi Tag             ctermfg=161
   hi Title           ctermfg=166
   hi Todo            ctermfg=231 ctermbg=232   cterm=bold

   hi Typedef         ctermfg=81
   hi Type            ctermfg=81                cterm=none
   hi Underlined      ctermfg=244               cterm=underline

   hi VertSplit       ctermfg=244 ctermbg=232   cterm=bold
   hi VisualNOS                   ctermbg=238
   hi Visual                      ctermbg=235
   hi WarningMsg      ctermfg=231 ctermbg=238   cterm=bold
   hi WildMenu        ctermfg=81  ctermbg=16

   hi Comment         ctermfg=59
   hi CursorColumn                ctermbg=236
   hi ColorColumn                 ctermbg=236
   hi LineNr          ctermfg=250 ctermbg=236
   hi NonText         ctermfg=59

   hi SpecialKey      ctermfg=59

   if exists("g:rehash256") && g:rehash256 == 1
       hi Normal       ctermfg=252 ctermbg=234
       hi CursorLine               ctermbg=236   cterm=none
       hi CursorLineNr ctermfg=208               cterm=none

       hi Boolean         ctermfg=141
       hi Character       ctermfg=222
       hi Number          ctermfg=141
       hi String          ctermfg=222
       hi Conditional     ctermfg=197               cterm=bold
       hi Constant        ctermfg=141               cterm=bold

       hi DiffDelete      ctermfg=125 ctermbg=233

       hi Directory       ctermfg=154               cterm=bold
       hi Error           ctermfg=222 ctermbg=233
       hi Exception       ctermfg=154               cterm=bold
       hi Float           ctermfg=141
       hi Function        ctermfg=154
       hi Identifier      ctermfg=208

       hi Keyword         ctermfg=197               cterm=bold
       hi Operator        ctermfg=197
       hi PreCondit       ctermfg=154               cterm=bold
       hi PreProc         ctermfg=154
       hi Repeat          ctermfg=197               cterm=bold

       hi Statement       ctermfg=197               cterm=bold
       hi Tag             ctermfg=197
       hi Title           ctermfg=203
       hi Visual                      ctermbg=238

       hi Comment         ctermfg=244
       hi LineNr          ctermfg=239 ctermbg=235
       hi NonText         ctermfg=239
       hi SpecialKey      ctermfg=239
   endif
end

" Must be at the end, because of ctermbg=234 bug.
" https://groups.google.com/forum/#!msg/vim_dev/afPqwAFNdrU/nqh6tOM87QUJ
set background=dark

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值