vim 配置

vim 配置,秀秀

进入个人目录下,命令:cd ~ 后打开.vimrc
或者vim ~/.vimrc

将下面内容全部拷贝到到.vimrc中 保存退出

     set nocompatible
     iletype on
     set rtp+=~/.vim/bundle/Vundle.vim

     call vundle#begin()。
    " 这里根据自己需要的插件来设置,以下是我的配置 "

    " YouCompleteMe:语句补全插件
    set runtimepath+=~/.vim/bundle/YouCompleteMe
    autocmd InsertLeave * if pumvisible() == 0|pclose|endif "离开插入模          式后自动关闭预览窗口"
    let g:ycm_collect_identifiers_from_tags_files = 1           " 开启 YCM基于标签引擎
    let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释与字符串中的内容也用于补全
    let g:syntastic_ignore_files=[".*\.py$"]
    let g:ycm_seed_identifiers_with_syntax = 1                  " 语法关键字补全
    let g:ycm_complete_in_comments = 1
    let g:ycm_confirm_extra_conf = 0                            " 关闭加载.ycm_extra_conf.py提示
    let g:ycm_key_list_select_completion = ['<c-n>', '<Down>']  " 映射按键,没有这个会拦截掉tab, 导致其他插件的tab不能用.
    let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']
    let g:ycm_complete_in_comments = 1                          " 在注释输入中也能补全
    let g:ycm_complete_in_strings = 1                           " 在字符串输入中也能补全
    let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释和字符串中的文字也会被收入补全
    let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
    let g:ycm_show_diagnostics_ui = 0                           " 禁用语法检查
    inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"             " 回车即选中当前项
    nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR>     " 跳转到定义处
    let g:ycm_min_num_of_chars_for_completion=2                 " 从第2个键入字符就开始罗列匹配项


    " github 仓库中的插件 "
    Plugin 'VundleVim/Vundle.vim'

    Plugin 'vim-airline/vim-airline'
    "vim-airline配置:优化vim界面"
    "let g:airline#extensions#tabline#enabled = 1
    " airline设置
    " 显示颜色
    set t_Co=256
    set laststatus=2
    " 使用powerline打过补丁的字体
    let g:airline_powerline_fonts = 1
    " 开启tabline
    let g:airline#extensions#tabline#enabled = 1
    " tabline中当前buffer两端的分隔字符
    let g:airline#extensions#tabline#left_sep = ' '
    " tabline中未激活buffer两端的分隔字符
    let g:airline#extensions#tabline#left_alt_sep = ' '
    " tabline中buffer显示编号
    let g:airline#extensions#tabline#buffer_nr_show = 1
    " 映射切换buffer的键位
    nnoremap [b :bp<CR>
    nnoremap ]b :bn<CR>
    " 映射<leader>num到num buffer
    map <leader>1 :b 1<CR>
    map <leader>2 :b 2<CR>
    map <leader>3 :b 3<CR>
    map <leader>4 :b 4<CR>
    map <leader>5 :b 5<CR>
    map <leader>6 :b 6<CR>
    map <leader>7 :b 7<CR>
    map <leader>8 :b 8<CR>
    map <leader>9 :b 9<CR>
     
    " vim-scripts 中的插件 "
    Plugin 'taglist.vim'
    "ctags 配置:F3快捷键显示程序中的各种tags,包括变量和函数等。
    map <F3> :TlistToggle<CR>
    let Tlist_Use_Right_Window=1
    let Tlist_Show_One_File=1
    let Tlist_Exit_OnlyWindow=1
    let Tlist_WinWidt=25

    Plugin 'The-NERD-tree'
    "NERDTree 配置:F2快捷键显示当前目录树
    map <F2> :NERDTreeToggle<CR>
    let NERDTreeWinSize=25 

    Plugin 'indentLine.vim'
    Plugin 'delimitMate.vim'

    " 非 github 仓库的插件"
    " Plugin 'git://git.wincent.com/command-t.git'
    " 本地仓库的插件 "

    call vundle#end()
  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    "新建.c,.h,.sh,.java文件,自动插入文件头 
    autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
    ""定义函数SetTitle,自动插入文件头 
    func SetTitle() 
"如果文件类型为.sh文件 
if &filetype == 'sh' 
    call setline(1, "##########################################################################") 
    call append(line("."), "# File Name: ".expand("%")) 
    call append(line(".")+1, "# Author: amoscykl") 
    call append(line(".")+2, "# mail: amoscykl980629@163.com") 
    call append(line(".")+3, "# Created Time: ".strftime("%c")) 
    call append(line(".")+4, "#########################################################################") 
    call append(line(".")+5, "#!/bin/zsh")
    call append(line(".")+6, "PATH=/home/edison/bin:/home/edison/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/work/tools/gcc-3.4.5-glibc-2.3.6/bin")
    call append(line(".")+7, "export PATH")
    call append(line(".")+8, "")
else 
    call setline(1, "/*************************************************************************") 
    call append(line("."), "    > File Name: ".expand("%")) 
    call append(line(".")+1, "  > Author: amoscykl") 
    call append(line(".")+2, "  > Mail: amoscykl@163.com ") 
    call append(line(".")+3, "  > Created Time: ".strftime("%c")) 
    call append(line(".")+4, " ************************************************************************/") 
    call append(line(".")+5, "")
endif
if &filetype == 'cpp'
    call append(line(".")+6, "#include<iostream>")
    call append(line(".")+7, "using namespace std;")
    call append(line(".")+8, "")
endif
if &filetype == 'c'
    call append(line(".")+6, "#include<stdio.h>")
    call append(line(".")+7, "")
endif
"   if &filetype == 'java'
"       call append(line(".")+6,"public class ".expand("%"))
"       call append(line(".")+7,"")
"   endif
"新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
    endfunc 
      
   """"""""""""""""""""""""""""""""""""""""""""""""""""""""
    "键盘命令
   """"""""""""""""""""""""""""""""""""""""""""""""""""""""
    nmap <leader>w :w!<cr>
    nmap <leader>f :find<cr>
    " 映射全选+复制 ctrl+a
    map <C-A> ggVGY
    map! <C-A> <Esc>ggVGY
    map <F12> gg=G
    " 选中状态下 Ctrl+c 复制
    vmap <C-c> "+y

  """"""""""""""""""""""""""""""""""""""""""""""""""""""""
  ""实用设置
  """"""""""""""""""""""""""""""""""""""""""""""""""""""""
  " 设置当文件被改动时自动载入
  set autoread
  " quickfix模式
  autocmd FileType c,cpp map <buffer> <leader><space>       :w<cr>:make<cr>
  "代码补全 
  set completeopt=preview,menu 
  "允许插件  
  filetype plugin on
  "共享剪贴板  
  set clipboard=unnamed 
  "从不备份  
  set nobackup
  "make 运行
  :set makeprg=g++\ -Wall\ \ %
  "自动保存
  set autowrite
  set ruler                   " 打开状态栏标尺
  set cursorline              " 突出显示当前行
  set magic                   " 设置魔术
  set guioptions-=T           " 隐藏工具栏
  set guioptions-=m           " 隐藏菜单栏
  "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
  " 设置在状态行显示的信息
  set foldcolumn=0
  set foldmethod=indent 
  set foldlevel=3 
  set foldenable              " 开始折叠
  " 不要使用vi的键盘模式,而是vim自己的
  set nocompatible
  " 语法高亮
  set syntax=on
  " 去掉输入错误的提示声音
  set noeb
  " 在处理未保存或只读文件的时候,弹出确认
  set confirm
  " 自动缩进
  set autoindent
  set cindent
  " Tab键的宽度
  set tabstop=4
  " 统一缩进为4
  set softtabstop=4
  set shiftwidth=4
  " 不要用空格代替制表符
  set noexpandtab
  " 在行和段开始处使用制表符
  set smarttab
  " 显示行号
  set number
  " 历史记录数
  set history=1000
  "禁止生成临时文件
  set nobackup
  set noswapfile
  "搜索忽略大小写
  set ignorecase
  "搜索逐字符高亮
  set hlsearch
  set incsearch
  "行内替换
  set gdefault
  "编码设置
  set enc=utf-8
  set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
  "语言设置
  set langmenu=zh_CN.UTF-8
  set helplang=cn
  " 我的状态行显示的内容(包括文件类型和解码)
  set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
  set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
  " 总是显示状态行
  set laststatus=2
  " 命令行(在状态行下)的高度,默认为1,这里是2
  set cmdheight=2
  " 侦测文件类型
  filetype on
  " 载入文件类型插件
  filetype plugin on
  " 为特定文件类型载入相关缩进文件
  filetype indent on
  " 保存全局变量
  set viminfo+=!
  " 带有如下符号的单词不要被换行分割
   set iskeyword+=_,$,@,%,#,-
  " 字符间插入的像素行数目
  set linespace=0
  " 增强模式中的命令行自动完成操作
  set wildmenu
  " 使回格键(backspace)正常处理indent, eol, start等
  set backspace=2
  " 允许backspace和光标键跨越行边界
  set whichwrap+=<,>,h,l
  " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
  set mouse=a
  set selection=exclusive
  set selectmode=mouse,key
  " 通过使用: commands命令,告诉我们文件的哪一行被改变过
  set report=0
  " 在被分割的窗口间显示空白,便于阅读
  set fillchars=vert:\ ,stl:\ ,stlnc:\
  " 高亮显示匹配的括号
  set showmatch
  " 匹配括号高亮的时间(单位是十分之一秒)
  set matchtime=1
  " 光标移动到buffer的顶部和底部时保持3行距离
  set scrolloff=3
  " 为C程序提供自动缩进
  set smartindent
  " 高亮显示普通txt文件(需要txt.vim脚本)
   au BufRead,BufNewFile *  setfiletype txt
  "自动补全
  :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
        return "\<Right>"
    else
        return a:char
    endif
  endfunction
  filetype plugin indent on 
  "打开文件类型检测, 加了这句才可以用智能补全
   set completeopt=longest,menu
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,076评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,658评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,732评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,493评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,591评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,598评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,601评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,348评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,797评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,114评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,278评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,953评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,585评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,202评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,180评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,139评论 2 352

推荐阅读更多精彩内容