一.vim 基础设置:
设置 |
含义 |
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 cindent | C语言格式对齐 |
set aw | 自动写入 |
set cindent shiftwidth=4 | C语言格式缩进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: 命令行模式
|
: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 基本操作:
操作 | 分类 | 行为说明 |
: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.配置
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.常用命令
操作 | 分类 | 行为说明 |
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配置
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 = 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 |
" -- 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 // 为标签增加类修饰符。注意,如果没有此选项,将不能对类成员补全
操作 | 分类 | 行为说明 |
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配置
let Tlist_Ctags_Cmd='ctags' | 因为我们放在环境变量里,所以可以直接执行 |
let Tlist_Use_Right_Window=1 | 让窗口显示在右边,0的话就是显示在左边 |
let Tlist_Show_One_File=1 | 0:让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配置
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=0 | 0个以上的文件都显示该窗口,可以保证打开新文件时,其他窗口不主动调整 |
" -- 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常用命令
操作 | 分类 | 行为说明 |
<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 配置
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'
endfunctionfunction! NERDTree_IsValid()return 1
endfunction
此时打开vim启动Winmanager时,会有一个空的buff打开,再打开 ~/.vim/plugin/winmanager.vim ,找到ToggleWindowsManager函数,并做如下修改:
function! <SID>ToggleWindowsManager()if IsWinManagerVisible()call s:CloseWindowsManager()elsecall 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配置
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命令
操作 | 分类 | 行为说明 | |
:WMToggle | 命令 | 打开/关闭WinManage | |
<enter>或双击 | 快捷键 | 如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件 | |
<tab> | 快捷键 | 如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件 | |
<F5> | 快捷键 | 刷新列表 | |
- | 快捷键 | 返回上一层目录 | |
c | 快捷键 | 使浏览目录成为vim当前工作目录 | |
d | 快捷键 | 创建目录 | |
D | 快捷键 | 删除当前光标下的目录或文件 | |
i | 快捷键 | 切换显示方式 | |
R | 快捷键 | 文件或目录重命名 | |
s | 快捷键 | 选择排序方式 | |
r | 快捷键 | 反向排序列表 | |
x | 快捷键 | 定制浏览方式, 使用你指定的程序打开该文件 |
8.代码折叠fold
8.1配置
set foldmethod=syntax | 用语法高亮来定义折叠 |
set foldlevel=100 | 启动vim时不要自动折叠代码 |
set foldcolumn=5 | 设置折叠栏宽度 |
"--fold setting--
set foldmethod=syntax " 用语法高亮来定义折叠
set foldlevel=100 " 启动vim时不要自动折叠代码
set foldcolumn=5 " 设置折叠栏宽度
8.2常用命令
操作 | 分类 | 行为说明 |
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 | 命令 | 打开vim在命令模式下输入,在屏幕的最左边就会出现一个project框。不过因为没有初始化暂时是空的 |
\C | 快捷键 |
在命令模式下(不是插入模式)输入 :\C(大写的C),会出现下面这些信息: Enter the Name of the Entry: xxxx (输入项目名称) |
PS:项目目录可以嵌套。而且更改之后在~/.vimprojects文件中就能看到内容,你可以手动进行更改。
10.quickfix命令集
通过quickfix命令集,你可在 Vim 内编译程序并直接跳转到出错位置进行修正。你可以接着重新编译并做修正,直到不再出错为止。
10.1配置
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使用
操作 | 分类 | 行为说明 |
: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 配置
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/cscope | cscopeprg’指定了执行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=3 | cspc的值决定了一个文件的路径的多少部分被显示。默认值是0,所以整个路径都会被显示。值为1的话,那么就只会显示文件名,不带路径。其他值就会显示不同的部分 |
" ----cscope setting----
" set cscopequickfix=s-,c-,d-,i-,t-,e- " 设置了该选项,该选项内的所有opions的搜索结果只显示一个在quickfix中
if has("cscope")set csprg=/usr/bin/cscopeset csto=1set cstset nocsverb" add any database in current directoryif filereadable("cscope.out")cs add cscope.outendifset 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 时自动更新ctagsif 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=+qTlistUpdate!cscope -Rkqbcs resetendif
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.vimif has("syntax")syntax on
endif" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")source /etc/vim/vimrc.local
endifset 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>iset 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
elseset 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=+qTlistUpdatecs 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 clearif version > 580" no guarantees for version 5.8 and below, but this makes it stop" complaininghi clearif exists("syntax_on")syntax resetendif
endif
let g:colors_name="molokai"if exists("g:molokai_original")let s:molokai_original = g:molokai_original
elselet s:molokai_original = 0
endifhi 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,boldhi 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=#000000hi Keyword guifg=#F92672 gui=bold
hi Label guifg=#E6DB74 gui=none
hi Macro guifg=#C4BE89 gui=italic
hi SpecialKey guifg=#66D9EF gui=italichi 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=#66D9EFhi 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=undercurlhi SpellCap guisp=#7070F0 gui=undercurlhi SpellLocal guisp=#70F0F0 gui=undercurlhi 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=boldhi Typedef guifg=#66D9EF
hi Type guifg=#66D9EF gui=none
hi Underlined guifg=#808080 gui=underlinehi 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=#000000hi TabLineFill guifg=#1B1D1E guibg=#1B1D1E
hi TabLine guibg=#1B1D1E guifg=#808080 gui=noneif s:molokai_original == 1hi Normal guifg=#F8F8F2 guibg=#272822hi Comment guifg=#75715Ehi CursorLine guibg=#3E3D32hi CursorLineNr guifg=#FD971F gui=nonehi CursorColumn guibg=#3E3D32hi ColorColumn guibg=#3B3A32hi LineNr guifg=#BCBCBC guibg=#3B3A32hi NonText guifg=#75715Ehi SpecialKey guifg=#75715E
elsehi Normal guifg=#F8F8F2 guibg=#1B1D1Ehi Comment guifg=#7E8E91hi CursorLine guibg=#293739hi CursorLineNr guifg=#FD971F gui=nonehi CursorColumn guibg=#293739hi ColorColumn guibg=#232526hi LineNr guifg=#465457 guibg=#232526hi NonText guifg=#465457hi SpecialKey guifg=#465457
end"
" Support for 256-color terminal
"
if &t_Co > 255if s:molokai_original == 1hi Normal ctermbg=234hi CursorLine ctermbg=235 cterm=nonehi CursorLineNr ctermfg=208 cterm=noneelsehi Normal ctermfg=252 ctermbg=233hi CursorLine ctermbg=234 cterm=nonehi CursorLineNr ctermfg=208 cterm=noneendifhi Boolean ctermfg=135hi Character ctermfg=144hi Number ctermfg=135hi String ctermfg=144hi Conditional ctermfg=161 cterm=boldhi Constant ctermfg=135 cterm=boldhi Cursor ctermfg=16 ctermbg=253hi Debug ctermfg=225 cterm=boldhi Define ctermfg=81hi Delimiter ctermfg=241hi DiffAdd ctermbg=24hi DiffChange ctermfg=181 ctermbg=239hi DiffDelete ctermfg=162 ctermbg=53hi DiffText ctermbg=102 cterm=boldhi Directory ctermfg=118 cterm=boldhi Error ctermfg=219 ctermbg=89hi ErrorMsg ctermfg=199 ctermbg=16 cterm=boldhi Exception ctermfg=118 cterm=boldhi Float ctermfg=135hi FoldColumn ctermfg=67 ctermbg=16hi Folded ctermfg=67 ctermbg=16hi Function ctermfg=118hi Identifier ctermfg=208 cterm=nonehi Ignore ctermfg=244 ctermbg=232hi IncSearch ctermfg=193 ctermbg=16hi keyword ctermfg=161 cterm=boldhi Label ctermfg=229 cterm=nonehi Macro ctermfg=193hi SpecialKey ctermfg=81hi MatchParen ctermfg=233 ctermbg=208 cterm=boldhi ModeMsg ctermfg=229hi MoreMsg ctermfg=229hi Operator ctermfg=161" complete menuhi Pmenu ctermfg=81 ctermbg=16hi PmenuSel ctermfg=255 ctermbg=242hi PmenuSbar ctermbg=232hi PmenuThumb ctermfg=81hi PreCondit ctermfg=118 cterm=boldhi PreProc ctermfg=118hi Question ctermfg=81hi Repeat ctermfg=161 cterm=boldhi Search ctermfg=0 ctermbg=222 cterm=NONE" marks columnhi SignColumn ctermfg=118 ctermbg=235hi SpecialChar ctermfg=161 cterm=boldhi SpecialComment ctermfg=245 cterm=boldhi Special ctermfg=81if has("spell")hi SpellBad ctermbg=52hi SpellCap ctermbg=17hi SpellLocal ctermbg=17hi SpellRare ctermfg=none ctermbg=none cterm=reverseendifhi Statement ctermfg=161 cterm=boldhi StatusLine ctermfg=238 ctermbg=253hi StatusLineNC ctermfg=244 ctermbg=232hi StorageClass ctermfg=208hi Structure ctermfg=81hi Tag ctermfg=161hi Title ctermfg=166hi Todo ctermfg=231 ctermbg=232 cterm=boldhi Typedef ctermfg=81hi Type ctermfg=81 cterm=nonehi Underlined ctermfg=244 cterm=underlinehi VertSplit ctermfg=244 ctermbg=232 cterm=boldhi VisualNOS ctermbg=238hi Visual ctermbg=235hi WarningMsg ctermfg=231 ctermbg=238 cterm=boldhi WildMenu ctermfg=81 ctermbg=16hi Comment ctermfg=59hi CursorColumn ctermbg=236hi ColorColumn ctermbg=236hi LineNr ctermfg=250 ctermbg=236hi NonText ctermfg=59hi SpecialKey ctermfg=59if exists("g:rehash256") && g:rehash256 == 1hi Normal ctermfg=252 ctermbg=234hi CursorLine ctermbg=236 cterm=nonehi CursorLineNr ctermfg=208 cterm=nonehi Boolean ctermfg=141hi Character ctermfg=222hi Number ctermfg=141hi String ctermfg=222hi Conditional ctermfg=197 cterm=boldhi Constant ctermfg=141 cterm=boldhi DiffDelete ctermfg=125 ctermbg=233hi Directory ctermfg=154 cterm=boldhi Error ctermfg=222 ctermbg=233hi Exception ctermfg=154 cterm=boldhi Float ctermfg=141hi Function ctermfg=154hi Identifier ctermfg=208hi Keyword ctermfg=197 cterm=boldhi Operator ctermfg=197hi PreCondit ctermfg=154 cterm=boldhi PreProc ctermfg=154hi Repeat ctermfg=197 cterm=boldhi Statement ctermfg=197 cterm=boldhi Tag ctermfg=197hi Title ctermfg=203hi Visual ctermbg=238hi Comment ctermfg=244hi LineNr ctermfg=239 ctermbg=235hi NonText ctermfg=239hi SpecialKey ctermfg=239endif
end" Must be at the end, because of ctermbg=234 bug.
" https://groups.google.com/forum/#!msg/vim_dev/afPqwAFNdrU/nqh6tOM87QUJ
set background=dark