zoukankan      html  css  js  c++  java
  • 我的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=0x7"
    let &t_EI = "<Esc>]50;CursorShape=1x7"

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

    "******************************************************杂项设置**********************************************************
    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("%:p:~")@'
        execute "noh"
        normal 'k
        "echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
      endfunction
     
      function TitleDet()
        let n=1                            "默认为添加
        while n < 10                        "判断前10行代码里面,是否有Last modified这个单词,
            let line = getline(n)
            if line =~ '^ **s*S*修订时间: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

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


  • 相关阅读:
    165. Compare Version Numbers
    164. Maximum Gap
    3、桶排序
    162. Find Peak Element
    160. Intersection of Two Linked Lists
    155. Min Stack
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    Linux/Unix系统编程手册 第二章:基本概念
    Linux/Unix系统编程手册 第一章:历史和标准
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/6823136.html
Copyright © 2011-2022 走看看