我的vim配置文件

觉得不错的话,可以直接将以下内容保存到.vimrc的文件中,放到home目录下即可:

"******************************************************特殊设置**********************************************************
autocmd InsertLeave * set nocul                    "浅色显示高亮行,离开时关闭
autocmd InsertLeave * set nocuc                    "浅色显示高亮行,离开时关闭
autocmd InsertEnter * set cul                    "浅色显示高亮行,进入时浅色显示打开
autocmd InsertEnter * set cuc                    "浅色显示高亮行,进入时浅色显示打开

let &t_SI = "\<Esc>]50;CursorShape=0\x7"
let &t_EI = "\<Esc>]50;CursorShape=1\x7"

"******************************************************特殊设置**********************************************************

"******************************************************杂项设置**********************************************************
syntax on                            "语法高亮
filetype plugin indent on                    "文件类型侦测
"colorscheme guodesert                        "设定配色方案
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc':'zo')<CR>        "启用代码折叠,用空格键来开关折叠    
ab psvm public static void main                    "试试缩写好用吗
"ab sop System.out.println
let NERDTreeQuitOnOpen=1
let NERDTreeDirArrows=0
let NERDTreeWinSize=40
let NERDRemoveExtraSpaces=0
let g:bufExplorerDisableDefaultKeyMapping = 1
let g:acp_behaviorKeywordCommand = "\<C-o>"
let g:acp_behaviorKeywordLength = -1
let g:acp_behaviorFileLength = -1
let g:SuperTabDefaultCompletionType = "<c-n>"
let g:SuperTabLongestHighlight = 1
let g:tagbar_sort=0
let g:tagbar_compact=1
let g:tagbar_foldlevel=1
let g:tagbar_iconchars=['+', '-']
let OmniCpp_SelectFirstItem = 2
let OmniCpp_ShowPrototypeInAbbr = 1
let OmniCpp_MayCompleteScope = 1

"******************************************************杂项设置**********************************************************

"******************************************************选项设置**********************************************************
"set list                            "让tab显示成>-------->--------
"set listchars=tab:>-,trail:-,extends:>,precedes:<        "配合上边的语句完成
"set completeopt=preview,menu
"set completeopt=longest,menu
set nocompatible                        "关闭vi兼容模式
set t_Co=256                            "开启vim的256颜色支持
set nobackup                            "覆盖文件时不备份
set autoindent                            "插入模式下输入<cr>或使用"o"或"O"命令开新行,从当前行复制缩进距离
set shiftwidth=4                        "(自动)缩进每一步使用的空白数目
set softtabstop=4                        "执行插入时,<Tab>算作空格的数目,可以改为4
set noexpandtab                            "不用空格展开<Tab>
set scrolloff=1                            "光标上下两侧最少保留的屏幕行数
set sidescrolloff=5                        "如果设置'nowrap',光标左右两侧保留的最少屏幕列数
set sidescroll=1                        "水平滚动时滚动的最少列数
set showcmd                            "在屏幕最后一行显示 (部分的) 命令
set showmode                            "在插入、替换和可视模式里,在最后一行提供消息
set hidden                            "放弃时隐藏缓冲区
set wildmenu                            "'wildmenu'打开时,命令行补全以增强模式运行
set wildmode=list:full                        "用'widechar'指定的字符所用的补全模式
set novisualbell                        "不使用可视响铃
set number                            "在每行前面显示行号
set numberwidth=3                        "行号使用的最小列数
set ignorecase                            "搜索模式里忽略大小写
set smartcase                            "搜索模式里包含大写字符,不使用ignorecase选项
set incsearch                            "输入搜索命令时,显示目前输入的模式的匹配位置。匹配的字符串被高亮
set hlsearch                            "搜索时高亮显示被找到的文本
set showmatch                            "插入括号时,短暂地跳转到匹配的对应括号
set matchtime=5                            "短暂跳转到匹配括号的时间
set textwidth=122                        "设定文本的宽度为122个字符时自动断行
"set columns=75                            "设置文本达到columns宽度时自动换行
set wrap                            "设置文本达到textwidth宽度时自动换行,但实际文件还是一行
"set nowrap                            "设置文本达到textwidth宽度时不自动换行
set complete+=k                            "关键字补全,扫描 'dictionary' 选项给出的文件
set history=255                            "命令的历史和最近搜索模式的历史被记住。本项决定分别记多少项历史
set wildignore+=*.svn                        "文件名补全时忽略.svn
set nosplitbelow                        "窗口的分割会把新窗口放到当前窗口之下
set nosplitright                        "窗口的分割会把新窗口放到当前窗口之右
"set background=dark                        "设置背景为暗色
set virtualedit+=block                        "在可视模式下可以选择一个方块
set autoread                            "当文件在外部被修改时,自动重新读取
set autowrite                            "自动保存文件
"set cmdheight=2                        "设定命令行的行数为1
"set cuc                            "将当前光标下的列高亮
set autochdir                            "自动切换当前目录为当前文件所在的目录
set helplang=cn                            "设置帮助语言
set iskeyword+=_,,@,%,#,-                    "带有这些字符的单词不要被换行分割 set backspace=2                            "使用回格键 set backspace=indent,eol,start                    "影响 <BS>、<Del>、CTRL-W和CTRL-U在插入模式下的工作方式 set noswapfile                            "没有交换文件 "set undofile                            "持久撤销功能 set foldlevel=99                        "设置折叠级别: 高于此级别的折叠会被关闭 set foldclose=all                        "设置为自动关闭折叠  set foldenable                            "开始折叠 set foldmethod=syntax                        "语法高亮项目指定折叠 set foldcolumn=0                        "设置折叠区域的宽度,显示折叠列 set cursorline                            "突出显示当前行 "set cursorcolumn                        "突出显示当前列 set ruler                            "显示状态栏标尺 set rulerformat =%33(%2*%<%=\修改:\%{strftime(\"%H:%M\",getftime(expand(\"%\")))}\ 光标:\%l\行\ %c%V\列\ %p%%%) set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936            "设置编码 set formatoptions+=q                        "描述自动排版如何进行的字母序列 set formatoptions+=r set formatoptions+=n "set formatoptions+=1 "set colorcolumn=+1     set smartindent                            "开启新行时使用智能自动缩进  "******************************************************选项设置**********************************************************  "******************************************************配色设置********************************************************** if strftime("%H") < 7                        "时间在7:00前     "hi cursorline   ctermfg=NONE    ctermbg=235    cterm=NONE    guibg=NONE    guifg=NONE  "指定高亮的规则bg=235     colorscheme guodesert elseif strftime("%H") > 19                    "时间在19:00后     "hi cursorline   ctermfg=NONE    ctermbg=235    cterm=NONE    guibg=NONE    guifg=NONE  "指定高亮的规则bg=235     colorscheme guodesert     else                            "时间在7:00~19:00之间     colorscheme github     hi cursorline   ctermfg=NONE    ctermbg=235    cterm=NONE    guibg=NONE    guifg=NONE  "指定高亮的规则bg=235 endif  "******************************************************配色设置**********************************************************  "******************************************************高亮设置********************************************************** hi CursorLine   ctermfg=NONE    ctermbg=235    cterm=NONE    guibg=NONE    guifg=NONE        "指定高亮的规则bg=235 highlight OverLength ctermbg=red ctermfg=white guibg=#592929 match OverLength /\%109v.\+/                    ""设置特殊背景红色 设置代码超出109列后背景变色  "******************************************************高亮设置**********************************************************  "######################################################自动补全########################################################## :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 function ClosePair(char)      "if getline('.')[col('.') - 1 ] == a:char     if getline('.') == a:char      return "\<Right>"      else      return a:char      endif  endfunction   "######################################################自动补全##########################################################   "====================================================##按键映射========================================================== map e ea "map e ea                            "移动到单词结尾时就自动进入插入模式 map + <C-w>+                            "增减窗口尺寸 map _ <C-w>- map <silent> <F2> :NERDTreeToggle<cr>                "tarbar functon list map <silent> <F3> :TagbarToggle<cr>                "header and implement file switch map <F4> :A<cr>                            "update index map <F5> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q<cr><cr>:cs kill cscope.out<cr>:!cscope -Rb<cr><cr>:cs add cscope.out<cr>        "switch display invisable char or not map <F6> :set list!<cr>:set list?<cr>                "highlight map <F7> ms:%s /\<<C-R>=expand("<cword>")<CR>\>//gn<cr>`    "swapfile list map <silent> <F8> :BufExplorer<CR>                "comment visual line nmap <C-[>g :cs find g <C-R>=expand("<cword>")<CR><CR>        "list the funcion called by this function nmap <C-[>d :cs find d <C-R>=expand("<cword>")<CR><CR>        "list the position where to call this word nmap <C-[>c :cs find c <C-R>=expand("<cword>")<CR><CR>        "search word in the project nmap <C-[>s :cs find s <C-R>=expand("<cword>")<CR><CR>        "search word in the project and the word can be in text nmap <C-[>t :cs find t <C-R>=expand("<cword>")<CR><CR>        "search word in the project and the word can be in text, support regex nmap <C-[>e :cs find e <C-R>=expand("<cword>")<CR><CR>        "list the file which filename is this word nmap <C-[>f :cs find f <C-R>=expand("<cfile>")<CR><CR>        "list the file include the file which filename is this word nmap <C-[>i :cs find i ^<C-R>=expand("<cfile>")<CR><CR>    "list the file which include this file
nmap <C-[>I :cs find i <C-R>=expand("%:t")<CR><CR>
"nnoremap j gj                            "自动换行时可在行中移动
"nnoremap k gk
"nnoremap <c-]> g<c-]>                        "move to right window
"noremap <c-l> <c-w>l                        "move to up window
"noremap <c-k> <c-w>k                        "move to down window
"noremap <c-j> <c-w>j                        "move to left window
"noremap <c-h> <c-w>h                        "goto the place where word definition
nnoremap <C-h> <C-w>h                        "在分割的窗口间移动
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
noremap <S-h> :bp<cr>                        "在buffer间移动
noremap <S-l> :bn<cr>
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>        "用空格键来开关折叠
vnoremap <silent> , :call NERDComment(1, "alignLeft")<cr>   "uncomment visual line
vnoremap <silent> . :call NERDComment(1, "uncomment")<cr>   "show list if more tag

if has("cscope")
    set nocsverb
    if filereadable("cscope.out")
        cs add cscope.out
    endif
endif

"======================================================按键映射==========================================================

"======================================================跳转位置==========================================================
if has("autocmd")                        "打开文件时,自动跳转到光标最后所在的位置
   au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("")      \| exe "normal! g'\"" | endif endif  "######################################################跳转位置##########################################################  "======================================================添加注释==========================================================   map <F10> :call TitleDet()<cr>                "将键盘上的F10功能键映射为添加   function AddTitle()     call append(0,"/* *=+=+=+=+* *** *=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= ")     call append(1,"  # 作者代号: *** #guochaoxxl")        "作者信息     call append(2,"  # 版权声明: *** #(魎魍魅魑)GPL3")        "版权声明     call append(3,"  # 联络信箱: *** #guochaoxxl@gmail.com")"联系方式     "call append(4,"  # 文档用途: *** #C++探秘——68讲贯通C++练习代码")       "call append(4,"  # 文档用途: *** #设计模式其实很简单Java")       call append(4,"  # 文档用途: *** #深入理解C指针")        "用途说明     call append(5,"  # 文档信息: *** #".expand("%:p:~"))    "代码说明     call append(6,"  # 修订时间: *** #".strftime("%Y年第%W周 %m月%d日 %A %p%I:%M (%j天)"))"时间信息     call append(7,"  # 代码说明: *** #自行添加")        "代码说明     call append(8," * *+=+=+=+=* *** *+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ */")   endf      function UpdateTitle()                    "更新最近修改时间和文件名     normal m'     execute '/修订时间:/s@:.*@\=strftime(": *** *%Y年第%W周 %m月%d日 %A %p%I:%M (%j天)")@'
    normal ''
    normal mk
    execute '/文档信息:/s@:.*@\="::".expand("execute"noh"normalk"echohlWarningMsg|echo"Successfulinupdatingthecopyright."|echohlNoneendfunctionfunctionTitleDet()letn=1"whilen<10"10Lastmodifiedletline=getline(n)ifline=   \*\s§:§.'
        call UpdateTitle()                "如果有的话,那么只需要更新即可
            return
        endif
        let n = n + 1
    endwhile
    call AddTitle()                        "如果没有的话,代表没有添加过作者信息,需要新添加;
  endfunction  

"======================================================添加注释==========================================================

"======================================================编译运行==========================================================
  map <F9> :call CompileRun()<cr>                "通过键盘F9映射快速实现编译与运行
  function CompileRun()
    exec "w"
    if &filetype == 'c'
    exec "!gcc -g % -o %<"
    exec "!%<"
    elseif &filetype == 'cpp'
    exec "!g++ -g % -o %<"
    exec "!%<"
    elseif &filetype == 'java'
    exec "!javac %"
    exec "!java %<"
    else
    exec "echo not support filetype!"
    endif
  endfunction

"======================================================编译运行==========================================================


posted @   叕叒双又  阅读(198)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示