vim配置

自己的vim配置

set nu
set ruler                           " 显示标尺
set autoread                        " 设置当文件被改动时自动载入
set completeopt=preview,menu        " 代码补全
set clipboard+=unnamed              " 共享剪贴板
set nobackup                        " 从不备份
set autowrite                       " 自动保存
set cursorline                      " 突出显示当前行
"set cursorcolumn                   " 高亮显示列
set confirm                         " 在处理未保存或只读文件的时候,弹出确认
set autoindent                      " 自动缩进
set tabstop=4                       " Tab键的宽度
set noexpandtab                     " 不要用空格代替制表符
set smarttab                        " 在行和段开始处使用制表符
set number                          " 显示行号
set noswapfile                      " 不要生成swap文件
set ignorecase                      " 搜索忽略大小写
set hlsearch                        " 搜索逐字符高亮
set iskeyword+=_,$,@,%,#,-         " 带有如下符号的单词不要被换行分割
set showmatch                       " 高亮显示匹配的括号
set matchtime=1                     " 匹配括号高亮的时间(单位是十分之一秒)
set smartindent                     " 为C程序提供自动缩进
set tags=.tags;                     " 设置 tags
set autochdir                       " ctags 在跳转时找不到ctags文件会自动去父目录找
set background=dark                 " 主题设置成黑模式
set shiftwidth=4                    " 设置移动宽度
set nofoldenable                    " 关闭自动折叠代码功能
set cc=100                          " 设置右边标尺
set wildmenu                        " 状态栏tab显示备选
set scrolloff=10                    " 光标移动到buffer的顶部和底部时保持10行距离
set clipboard=unnamed               " 默认使用系统剪切板
set paste                           " 关闭黏贴时乱缩进
"set relativenumber                 " 启用相对行号
set incsearch                       " 增强查找
set ai!                             " 设置自动缩进

set background=dark
let g:solarized_termcolors=256
let g:solarized_termtrans=1
let g:solarized_contrast="normal"
let g:solarized_visibility="normal"
colorscheme molokai                 " 配色使用
"colorscheme solarized                  " 配色使用

let Tlist_Ctags_Cmd='ctags'
let Tlist_Show_One_File=1           "不同时显示多个文件的tag,只显示当前文件的
let Tlist_WinWidt =28               "设置taglist的宽度
let Tlist_Exit_OnlyWindow=1         "如果taglist窗口是最后一个窗口,则退出vim
"let Tlist_Use_Right_Window=1       "在右侧窗口中显示taglist窗口
let Tlist_Use_Left_Windo =1         "在左侧窗口中显示taglist窗口
" 打开和关闭Tlist的快捷键
map <F6> :Tlist<CR>

"设jutsushi/tagbar'
"nmap <Leader>tb :TagbarToggle<CR>      "快捷键设置
let g:tagbar_width=30                   "窗口宽度的设置
" 打开和关闭tagbar的快捷键
map <F7> :Tagbar<CR>
"autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen()  "如果是c语言的程序的话,tagbar自动开启

"设置界面分割
"let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"
"let g:winManagerWindowLayout = "TagList|FileExplorer,BufExplorer"
"设置winmanager的宽度,默认为25
let g:winManagerWidth = 30
"定义打开关闭winmanager按键
nmap <F8> :WMToggle<CR>

" 文件搜索 快捷键是ctrl+p
let g:ctrlp_working_path_mode = 'ra'
let g:ctrlp_by_filename = 0
let g:ctrlp_open_multiple_files = 'v'
set wildignore+=*/tmp/*,*.so,*.swp,*.zip " MacOSX/Linux
set wildignore+=*\\tmp\\*,*.swp,*.zip,*.exe " Windows

let g:ctrlp_custom_ignore = {
  \ 'dir': '\v[\/]\.(git|hg|svn)$',
  \ 'file': '\v\.(exe|so|dll)$',
  \ 'link': 'some_bad_symbolic_links',
  \ }

" ctag的设置
set autochdir
set tags=tags;
map <c-]> g<c-]>

if has("cscope")
    " set csprg=/usr/bin/cscope
    set cst
    set nocsverb

    " use both cscope and ctag for 'ctrl-]', ':ta', and 'vim -t'
     set cscopetag
    " show msg when any other cscope db added
    " set cscopeverbose
    " check cscope for definition of a symbol before checking ctags: set to 1
    " if you want the reverse search order.
    set csto=0

    " set cscopequickfix=s-,c-,d-,i-,t-,e-

    "add any database in current dir
    if filereadable("cscope.out")
        cs add cscope.out
    " else search cscope.out elsewhere
    else
        let cscope_file=findfile("cscope.out", ".;")
        let cscope_pre=matchstr(cscope_file, ".*/")
        " echo cscope_file
        if !empty(cscope_file) && filereadable(cscope_file)
            exe "cs add" cscope_file cscope_pre
        endif
    endif
endif
    set csverb

map <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
map <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
map <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>
map <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>
map <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>
map <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
map <C-\>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
map <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>

" vundle的设置
set nocompatible              " 去除VI一致性,必须要添加
filetype off                  " 必须要添加
" 设置包括vundle和初始化相关的runtime path
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
    " 另一种选择, 指定一个vundle安装插件的路径
    "call vundle#begin('~/some/path/here')

    " 让vundle管理插件版本,必须
    Plugin 'VundleVim/Vundle.vim'

    " 以下范例用来支持不同格式的插件安装.
    " 请将安装插件的命令放在vundle#begin和vundle#end之间.
    " Github上的插件
    " 格式为 Plugin '用户名/插件仓库名'
    Plugin 'tpope/vim-fugitive'
    " 来自 http://vim-scripts.org/vim/scripts.html 的插件
    " Plugin '插件名称' 实际上是 Plugin 'vim-scripts/插件仓库名' 只是此处的用户名可以省略
    Plugin 'L9'
    Plugin 'Tagbar'
    Plugin 'taglist.vim'
    Plugin 'winmanager'
    Plugin 'godlygeek/tabular'
    Plugin 'Markdown'
    Plugin 'suan/vim-instant-markdown'
    Plugin 'https://github.com/plasticboy/vim-markdown'
    Plugin 'Valloric/YouCompleteMe'                             "自动补齐 ./install.sh --clang-completer
    Plugin 'rdnetto/YCM-Generator'
    Plugin 'ctrlp.vim'                                          "文件搜索
    Plugin 'tomasr/molokai'                                     "一种颜色主题
    Plugin 'bling/vim-airline'                                  "状态栏增强
    Plugin 'altercation/vim-colors-solarized'                   "一种颜色主题
    Plugin 'incsearch.vim'                                      "查找插件
    Plugin 'commentary.vim'                                     "gc快速注释
    " 由Git支持但不再github上的插件仓库 Plugin 'git clone 后面的地址'
"   Plugin 'git://git.wincent.com/command-t.git'
    " 本地的Git仓库(例如自己的插件) Plugin 'file:///+本地插件仓库绝对路径'
"   Plugin 'file:///home/gmarik/path/to/plugin'
    " 插件在仓库的子目录中.
    " 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
"   Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
    " 安装L9,如果已经安装过这个插件,可利用以下格式避免命名冲突
"   Plugin 'ascenator/L9', {'name': 'newL9'}

    " 你的所有插件需要在下面这行之前
    call vundle#end()            " 必须
    filetype plugin indent on    " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
    " 忽视插件改变缩进,可以使用以下替代:
    "filetype plugin on
    "
    " 常用的命令
    " :PluginList       - 列出所有已配置的插件
    " :PluginInstall     - 安装插件,追加 `!` 用以更新或使用 :PluginUpdate
    " :PluginSearch foo - 搜索 foo ; 追加 `!` 清除本地缓存
    " :PluginClean      - 清除未使用插件,需要确认; 追加 `!` 自动批准移除未使用插件
    "
    " 查阅 :h vundle 获取更多细节和wiki以及FAQ
    " 将你自己对非插件片段放在这行之后

" 写配置文件的方法
" 1.有makefile的时候使用,脚本
" 2.没有的时候在,编译的脚本中加上-DCMAKE_EXPORT_COMPILE_COMMANDS=ON,然后在.ycm_extra_conf.py
" 的compilation_database_folder这一行加上生成的compilation_commands.json文件路径
" 寻找全局配置文件
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
" 禁用syntastic来对python检查
"let g:syntastic_ignore_files=[".*\.py$"]
" 使用ctags生成的tags文件
let g:ycm_collect_identifiers_from_tag_files = 1
" 开启语义补全
" 修改对C语言的补全快捷键,默认是CTRL+space,修改为ALT+;未测出效果
"let g:ycm_key_invoke_completion = '<M-;>'
" 设置转到定义处的快捷键为ALT+G,未测出效果
"nmap <M-g> :YcmCompleter GoToDefinitionElseDeclaration <C-R>=expand("<cword>")<CR><CR>
"关键字补全
let g:ycm_seed_identifiers_with_syntax = 1
" 在接受补全后不分裂出一个窗口显示接受的项
set completeopt-=preview
" 让补全行为与一般的IDE一致
set completeopt=longest,menu
" 不显示开启vim时检查ycm_extra_conf文件的信息
let g:ycm_confirm_extra_conf=0
" 每次重新生成匹配项,禁止缓存匹配项
let g:ycm_cache_omnifunc=0
" 在注释中也可以补全
let g:ycm_complete_in_comments=1
" 输入第一个字符就开始补全
let g:ycm_min_num_of_chars_for_completion=1
" 错误标识符
let g:ycm_error_symbol='>>'
" 警告标识符
let g:ycm_warning_symbol='>*'
" 不查询ultisnips提供的代码模板补全,如果需要,设置成1即可
" let g:ycm_use_ultisnips_completer=0
"关闭语法提示
let g:ycm_show_diagnostics_ui = 0

"==================================================================
"国芯强制性配置,放在.vimrc最后面
"==================================================================

set fencs=utr-8,cp936

"删除尾行空格
nnoremap <leader>f :%s/\s\+$//<cr>

function! KRIndent()
    let c_space_errors = 0
    set fileformats=unix
    set textwidth=120
    set noexpandtab
    set shiftround
    set cindent
    set formatoptions=tcqlron
    set cinoptions=:0,l1,t0,g0
    syntax keyword cType u8 u16 u32 u64 s8 s16 s32 s64 off64_t
    highlight default link LinuxError ErrorMsg

    syntax match LinuxError / \+\ze\t/     " spaces before tab
    syntax match LinuxError /\s\+$/        " trailing whitespaces
    syntax match LinuxError /\%121v.\+/    " virtual column 121 and more
    autocmd BufWrite <buffer> :%s/\s\+$//e "文件保存时,自动删除行尾空格
endfunction
if has("autocmd")
    autocmd FileType c,cpp,cxx,h,hh,sh,* call KRIndent()
endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值