"一、高亮
set number " 打开
set nocompatible "不与 Vi 兼容(采用 Vim 自己的操作命令
set showmode "在底部显示,当前处于命令模式还是插入模式。
set showcmd "命令模式下,在底部显示,当前键入的指令。比如,键入的指令是2y3d,那么底部就会显示2y3,当键入d的时候,操作完成,显示消失。
set mouse=a "支持使用鼠标
set selection=exclusive
set selectmode=mouse,key " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
"二、缩进
set autoindent "按下回车键后,下一行的缩进会自动跟上一行的缩进保持一致。
set smartindent "加强自动缩进
set tabstop=2 "按下 Tab 键时,Vim 显示的空格数。
set shiftwidth=4 "在文本上按下 >> (增加一级缩进)、 << (取消一级缩进)或者 == (取消全部缩进)时,每一级的字符数。
set expandtab "由于 Tab 键在不同的编辑器缩进不一致,该设置自动将 Tab 转为空格。
set softtabstop=2 "Tab 转为多少个空格。
filetype on "检测文件类型
filetype indent on "针对不同的文件采用不同的缩进方式
filetype plugin on "允许插件
filetype plugin indent on "启动智能补全
set wildmenu "ex命令补全时出现在状态栏的那个补全列表
"三、外观
"set relativenumber "显示光标所在的当前行的行号,其他行都为相对于该行的相对行号。
set bg=dark
set cursorcolumn "高亮所在列
set cursorline "光标所在的当前行高亮。
highlight CursorLine cterm=none ctermbg=236
highlight CursorColumn cterm=none ctermbg=236
set textwidth=80 "设置行宽,即一行显示多少个字符。
set foldenable " 允许折叠
set foldmethod=manual " 手动折叠
set wrap "自动折行,即太长的行分成几行显示。
set nowrap "关闭自动折行
set linebreak "只有遇到指定的符号(比如空格、连词号和其他标点符号),才发生折行。也就是说,不会在单词内部折行。
set wrapmargin=2 "指定折行处与编辑窗口的右边缘之间空出的字符数。
set scrolloff=5 "垂直滚动时,光标距离顶部 / 底部的位置(单位:行)。
set sidescrolloff=15 "水平滚动时,光标距离行首或行尾的位置(单位:字符)。该配置在不折行时比较有用。
set laststatus=2 "是否显示状态栏。0 表示不显示,1 表示只在多窗口时显示,2 表示显示。
set ruler "在状态栏显示光标的当前位置(位于哪一行哪一列)。
"四、搜索
set showmatch "光标遇到圆括号、方括号、大括号时,自动高亮对应的另一个圆括号、方括号和大括号。
set hlsearch "搜索时,高亮显示匹配结果。
set incsearch "输入搜索模式时,每输入一个字符,就自动跳到第一个匹配的结果。
set ignorecase "搜索时忽略大小写。
set smartcase "如果同时打开了ignorecase,那么对于只有一个大写字母的搜索词,将大小写敏感;其他情况都是大小写不敏感。比如,搜索Test时,将不匹配test;搜索test时,将匹配Test。
"自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap{ { <CR> }<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
imap { {}<ESC>i<CR><ESC>V<O
imap { {}<ESC>i<CR><ESC>O
function!ClosePair(char)
if getline('.')[col('.')-1] == a:char
return "\<Right>"
else
return a:char
endif
endfunction
filetype plugin indent on "打开文件类型检测, 加了这句才可以用智能补全
set completeopt=longest,menu
" 大括号自动分行"
autocmd BufWritePre,BufRead *.c :inoremap <Enter> <c-r>=BracketsEnter('}')<CR>
autocmd BufWritePre,BufRead *.cpp :inoremap <Enter> <c-r>=BracketsEnter('}')<CR>
function BracketsEnter(char)
if getline('.')[col('.')-1] == a:char
return "\<Enter>\<Tab>\<Esc>mpa\<Enter>\<Esc>`pa"
else
return "\<Enter>"
endif
endf
"五、编辑
""set spell spelllang=en_us "打开英语单词的拼写检查。
set nobackup "不创建备份文件。默认情况下,文件保存时,会额外创建一个备份文件,它的文件名是在原文件名的末尾,再添加一个波浪号(?)。
set noswapfile "不创建交换文件。交换文件主要用于系统崩溃时恢复文件,文件名的开头是.、结尾是.swp。
set undofile "保留撤销历史
set wildmenu " 增强模式中的命令行自动完成操作
set wildmode=longest:list,full "命令模式下,底部操作指令按下 Tab 键自动补全。第一次按下 Tab,会显示所有匹配的操作指令的清单;第二次按下 Tab,会依次选择各个指令。
set shortmess=atI "启动的时候不显示那个援助乌干达的提示