vim安装 YCM 过程记录

YCM(YouComplateMe) 属于Vim中大神级的插件,提供了类似于巨硬爸爸的VS中的代码补全,但是其安装方式也是比较复杂,因此特意写下一篇记录,记录下我自己如何安装这一插件的过程;

  1. 检查自己的vim版本是否在7.9版本之上、是否支持Pthon很幸运我的vim版本是8.0
 vim --version    #查看vim版本以及是否支持Python 支持的话会在前方出现一个‘+’字符

  2.  安装各类可能需要的环境

编译 YouCompleteMe 插件时需要依赖 cmake 构建 Makefile,且依赖 Python 源码头文件,Ubuntu 系统可以使用以下命令安装相关依赖。

 sudo apt-get install build-essential cmake python-dev python3-dev
  1. 安装git 和 Vundle
   sudo apt-get install git

vim官方推荐一个插件“vundle”用于管理vim的其他插件,这个插件的安装使用git 克隆到自己的本地文件夹,后面这个Vundle.vim就是vim的插件文件。*此路径  :~/.vim/bundle/Vundle.vim 是vim的插件默认路径

     git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
  1. 下载YouComplateMe源码 等待编译
 git clone https://github.com/Valloric/YouCompleteMe.git ~/.vim/bundle/YouCompleteMe
  1. 下载YouComplateMe可能需要的安装环境

下载需要的安装环境需要跳转到YouComplateMe所在目录

        cd ~/.vim/bundle/YouCompleteMe
        git submodule update --init --recursive
 
  1. 编译YCM(YouComplateMe)

在YCM所在目录下执行

  ./install.py --clang-completer

期间如果出现错误,参考:https://www.cnblogs.com/dakewei/p/10491373.html 解决错误;

  1. 如果出现 AttributeError: ‘module‘ object has no attribute ‘FlagsForFile‘ 错误;

需要添加一个配置文件,在这里添加一个 C family 类型文件模板

import os import ycm_core flags = [
    ‘-Wall‘,
    ‘-Wextra‘,
    ‘-Werror‘,
    ‘-Wno-long-long‘,
    ‘-Wno-variadic-macros‘,
    ‘-fexceptions‘,
    ‘-ferror-limit=10000‘,
    ‘-DNDEBUG‘,
    ‘-std=c99‘,
    ‘-xc‘,
    ‘-isystem/usr/include/‘,
    ]
SOURCE_EXTENSIONS = [
                         ‘.cpp‘,
                         ‘.cxx‘,
                         ‘.cc‘,
                         ‘.c‘,
                         ]
def FlagsForFile( filename, **kwargs ):
    return {
        ‘flags‘: flags,
        ‘do_cache‘: True
    }
  1. 将以上代码写入到这个文件
    ~/.ycm_c-c++_conf.py
  1. 打开 .vimrc 配置文件 加入如下语句:
    let g:ycm_global_ycm_extra_conf = "~/.ycm_c-c++_conf.py"

自由配置YCM配置 参考网址:http://zhiyi.live/2019/05/29/YouCompleteMe%E8%B8%A9%E5%9D%91%E8%AE%B0/

  1. 安装 NERDTree 插件显示当前目录下的目录树
    cd ~/.vim/bundle
    git clone https://github.com/scrooloose/nerdtree.git
  1. 在.vimrc文件Vundle管理中添加插件
Plugin ‘scrooloose/nerdtree‘
  1. 添加相对应 NERDTree的自定义设置,例如默认开启
"--------------NERD TREE SETTING---------------
"自动启动文件树
autocmd vimenter * NERDTree
"设置快捷按键打开关闭文件树
map <C-t> :NERDTreeToggle<CR>
"关闭vim时,如果打开的文件除了NERDTree没有其他文件时,它自动关闭,减少多次按:q!
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType")&&b:NERDTreeType == "primary") | q | endif

  

最后把自己配置的.vimrc 文件po出来供大家使用

  1 set nocompatible              " 去除VI一致性,必须要添加
  2 filetype off                  " 必须要添加
  3
  4 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  5
  6 " 显示相关
  7
  8 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  9
 10 "set shortmess=atI  " 启动的时候不显示那个援助乌干达儿童的提示
 11
 12 "winpos 5 5          " 设定窗口位置
 13
 14 "set lines=40 columns=155    " 设定窗口大小
 15
 16 set nu              " 显示行号
 17
 18 set go=            " 不要图形按钮
 19
 20 "color asmanian2    " 设置背景主题
 21
 22 set guifont=Consolas:h10:cANSI  " 设置字体
 23
 24 "syntax on          " 语法高亮
 25
 26 autocmd InsertLeave * se nocul  " 用浅色高亮当前行
 27
 28 autocmd InsertEnter * se cul    " 用浅色高亮当前行
 29
 30 "set ruler          " 显示标尺
 31
 32 set showcmd        " 输入的命令显示出来,看的清楚些
 33
 34 "set cmdheight=1    " 命令行(在状态行下)的高度,设置为1
 35
 36 "set whichwrap+=<,>,h,l  " 允许backspace和光标键跨越行边界(不建议)
 37
 38 set scrolloff=3    " 光标移动到buffer的顶部和底部时保持3行距离
 39
 40 set novisualbell    " 不要闪烁(不明白)
 41
 42 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}  "状态行显示的内容
 43
 44 set laststatus=1    " 启动显示状态行(1),总是显示状态行(2)
 45
 46 set foldenable      " 允许折叠
 47
 48 set foldmethod=manual  " 手动折叠
 49
 50 "set background=dark "背景使用黑色
 51
 52 set nocompatible  "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
 53
 54 " 显示中文帮助
 55
 56 if version >= 603
 57
 58     set helplang=cn
 59
 60     set encoding=utf-8
 61
 62 endif
 63
 64 " 设置配色方案
 65
 66 "colorscheme murphy
 67
 68 "字体
 69
 70 "if (has("gui_running"))
 71
 72 "  set guifont=Bitstream\ Vera\ Sans\ Mono\ 10
 73
 74 "endif
 75
 76
 77
 78 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
 79
 80 set termencoding=utf-8
 81
 82 set encoding=utf-8
 83
 84 set fileencodings=ucs-bom,utf-8,cp936
 85
 86 set fileencoding=utf-8
 87
 88 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 89
 90 """""新文件标题""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 91
 92 "新建.c,.h,.sh,.java文件,自动插入文件头
 93
 94 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
 95
 96 ""定义函数SetTitle,自动插入文件头
 97
 98 func SetTitle()
 99
100     "如果文件类型为.sh文件
101
102     if &filetype == ‘sh‘
103
104         call setline(1,"\#########################################################################")
105
106         call append(line("."), "\# File Name: ".expand("%"))
107
108         call append(line(".")+1, "\# Author: kimalittlestar")
109
110         call append(line(".")+2, "\# mail: [email protected]")
111
112         call append(line(".")+3, "\# Created Time: ".strftime("%c"))
113
114         call append(line(".")+4, "\#########################################################################")
115
116         call append(line(".")+5, "\#!/bin/bash")
117
118         call append(line(".")+6, "")
119
120     else
121
122         call setline(1, "/*************************************************************************")
123
124         call append(line("."), "    > File Name: ".expand("%"))
125
126         call append(line(".")+1, "    > Author: kimalittlestar")
127
128         call append(line(".")+2, "    > Mail: [email protected] ")
129
130         call append(line(".")+3, "    > Created Time: ".strftime("%c"))
131
132         call append(line(".")+4, " ************************************************************************/")
133
134         call append(line(".")+5, "")
135
136     endif
137
138 "  if &filetype == ‘cpp‘
139
140 "
141
142 "      call append(line(".")+6, "#include<iostream>")
143
144 "
145
146 "      call append(line(".")+7, "using namespace std;")
147
148 "
149
150 "      call append(line(".")+8, "")
151
152 "
153
154 "  endif
155
156 "
157
158 "  if &filetype == ‘c‘
159
160 "
161
162 "      call append(line(".")+6, "#include<stdio.h>")
163
164 "
165
166 "      call append(line(".")+7, "")
167
168 "
169
170 "  endif
171
172     "新建文件后,自动定位到文件末尾
173
174     autocmd BufNewFile * normal G
175
176 endfunc
177
178 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
179
180 "键盘命令
181
182 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
183
184 nmap <leader>w :w!<cr>
185
186 nmap <leader>f :find<cr>
187
188 " 映射全选+复制 ctrl+a
189
190 map <C-A> ggVGY
191
192 map! <C-A> <Esc>ggVGY
193
194 map <F12> gg=G
195
196 " 选中状态下 Ctrl+c 复制
197
198 vmap <C-c> "+y
199
200 "去空行
201
202 nnoremap <F2> :g/^\s*$/d<CR>
203
204 "比较文件
205
206 nnoremap <C-F2> :vert diffsplit
207
208 "新建标签
209
210 map <M-F2> :tabnew<CR>
211
212 "列出当前目录文件
213
214 map <F3> :tabnew .<CR>
215
216 "打开树状文件目录
217
218 map <C-f> \be
219
220 "C,C++ 按F5编译运行
221
222 map <F5> :call CompileRunGcc()<CR>
223
224 func! CompileRunGcc()
225
226     exec "w"
227
228     if &filetype == ‘c‘
229
230         exec "!g++ % -o %<"
231
232         exec "! ./%<"
233
234     elseif &filetype == ‘cpp‘
235
236         exec "!g++ % -o %<"
237
238         exec "! ./%<"
239
240     elseif &filetype == ‘java‘
241
242         exec "!javac %"
243
244         exec "!java %<"
245
246     elseif &filetype == ‘sh‘
247
248         :!./%
249
250     endif
251
252 endfunc
253
254 "C,C++的调试
255
256 map <F8> :call Rungdb()<CR>
257
258 func! Rungdb()
259
260     exec "w"
261
262     exec "!g++ % -g -o %<"
263
264     exec "!gdb ./%<"
265
266 endfunc
267
268 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
269
270 ""实用设置
271
272 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
273
274 " 设置当文件被改动时自动载入
275
276 set autoread
277
278 " quickfix模式
279
280 autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
281
282 "代码补全
283
284 set completeopt=preview,menu
285
286 "允许插件
287
288 filetype plugin on
289
290 "共享剪贴板
291
292 set clipboard+=unnamed
293
294 "从不备份
295
296 set nobackup
297
298 "make 运行
299
300 :set makeprg=g++\ -Wall\ \ %
301
302 "自动保存
303
304 set autowrite
305
306 set ruler                  " 打开状态栏标尺
307
308 set cursorline              " 突出显示当前行
309
310 set magic                  " 设置魔术
311
312 set guioptions-=T          " 隐藏工具栏
313
314 set guioptions-=m          " 隐藏菜单栏
315
316 "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
317
318 " 设置在状态行显示的信息
319
320 set foldcolumn=0
321
322 set foldmethod=indent
323
324 set foldlevel=3
325
326 set foldenable              " 开始折叠
327
328 " 不要使用vi的键盘模式,而是vim自己的
329
330 set nocompatible
331
332 " 语法高亮
333
334 set syntax=on
335
336 " 去掉输入错误的提示声音
337
338 set noeb
339
340 " 在处理未保存或只读文件的时候,弹出确认
341
342 set confirm
343
344 " 自动缩进
345
346 set autoindent
347
348 set cindent
349
350 " Tab键的宽度
351
352 set tabstop=4
353
354 " 统一缩进为4
355
356 set softtabstop=4
357
358 set shiftwidth=4
359
360 " 不要用空格代替制表符
361
362 set noexpandtab
363
364 " 在行和段开始处使用制表符
365
366 set smarttab
367
368 " 显示行号
369
370 set number
371
372 " 历史记录数
373
374 set history=1000
375
376 "禁止生成临时文件
377
378 set nobackup
379
380 set noswapfile
381
382 "搜索忽略大小写
383
384 set ignorecase
385
386 "搜索逐字符高亮
387
388 set hlsearch
389
390 set incsearch
391
392 "行内替换
393
394 set gdefault
395
396 "编码设置
397
398 set enc=utf-8
399
400 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
401
402 "语言设置
403
404 set langmenu=zh_CN.UTF-8
405
406 set helplang=cn
407
408 " 我的状态行显示的内容(包括文件类型和解码)
409
410 "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
411
412 "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
413
414 " 总是显示状态行
415
416 set laststatus=2
417
418 " 命令行(在状态行下)的高度,默认为1,这里是2
419
420 set cmdheight=2
421
422 " 侦测文件类型
423
424 filetype on
425
426 " 载入文件类型插件
427
428 filetype plugin on
429
430 " 为特定文件类型载入相关缩进文件
431
432 filetype indent on
433
434 " 保存全局变量
435
436 set viminfo+=!
437
438 " 带有如下符号的单词不要被换行分割
439
440 set iskeyword+=_,$,@,%,#,-
441
442 " 字符间插入的像素行数目
443
444 set linespace=0
445
446 " 增强模式中的命令行自动完成操作
447
448 set wildmenu
449
450 " 使回格键(backspace)正常处理indent, eol, start等
451
452 set backspace=2
453
454 " 允许backspace和光标键跨越行边界
455
456 set whichwrap+=<,>,h,l
457
458 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
459
460 set mouse=a
461
462 set selection=exclusive
463
464 set selectmode=mouse,key
465
466 " 通过使用: commands命令,告诉我们文件的哪一行被改变过
467
468 set report=0
469
470 " 在被分割的窗口间显示空白,便于阅读
471
472 set fillchars=vert:\ ,stl:\ ,stlnc:473
474 " 高亮显示匹配的括号
475
476 set showmatch
477
478 " 匹配括号高亮的时间(单位是十分之一秒)
479
480 set matchtime=1
481
482 " 光标移动到buffer的顶部和底部时保持3行距离
483
484 set scrolloff=3
485
486 " 为C程序提供自动缩进
487
488 set smartindent
489
490 " 高亮显示普通txt文件(需要txt.vim脚本)
491
492 au BufRead,BufNewFile *  setfiletype txt
493
494 "自动补全
495
496 :inoremap ( ()<ESC>i
497
498 :inoremap ) <c-r>=ClosePair(‘)‘)<CR>
499
500 :inoremap { {<CR>}<ESC>O
501
502 :inoremap } <c-r>=ClosePair(‘}‘)<CR>
503
504 :inoremap [ []<ESC>i
505
506 :inoremap ] <c-r>=ClosePair(‘]‘)<CR>
507
508 :inoremap " ""<ESC>i
509
510 :inoremap ‘ ‘‘<ESC>i
511
512 function! ClosePair(char)
513
514     if getline(‘.‘)[col(‘.‘) - 1] == a:char
515
516         return "\<Right>"
517
518     else
519
520         return a:char
521
522     endif
523
524 endfunction
525
526 filetype plugin indent on
527
528 "打开文件类型检测, 加了这句才可以用智能补全
529
530 set completeopt=longest,menu
531
532 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
533
534 " CTags的设定
535
536 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
537
538 let Tlist_Sort_Type = "name"    " 按照名称排序
539
540 let Tlist_Use_Right_Window = 1  " 在右侧显示窗口
541
542 let Tlist_Compart_Format = 1    " 压缩方式
543
544 let Tlist_Exist_OnlyWindow = 1  " 如果只有一个buffer,kill窗口也kill掉buffer
545
546 let Tlist_File_Fold_Auto_Close = 0  " 不要关闭其他文件的tags
547
548 let Tlist_Enable_Fold_Column = 0    " 不要显示折叠树
549
550 autocmd FileType java set tags+=D:\tools\java\tags
551
552 "autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags
553
554 "let Tlist_Show_One_File=1            "不同时显示多个文件的tag,只显示当前文件的
555
556 "设置tags
557
558 set tags=tags
559
560 "set autochdir
561
562 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
563
564 "其他东东
565
566 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
567
568 "默认打开Taglist
569
570 let Tlist_Auto_Open=1
571
572 """"""""""""""""""""""""""""""
573
574 " Tag list (ctags)
575
576 """"""""""""""""""""""""""""""""
577
578 let Tlist_Ctags_Cmd = ‘/usr/bin/ctags‘
579
580 let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
581
582 let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
583
584 let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
585
586 " minibufexpl插件的一般设置
587
588 let g:miniBufExplMapWindowNavVim = 1
589
590 let g:miniBufExplMapWindowNavArrows = 1
591
592 let g:miniBufExplMapCTabSwitchBufs = 1
593
594 let g:miniBufExplModSelTarget = 1
595
596 "----------------设置包括vundle和初始化相关的runtime path----------------------
597
598 set rtp+=~/.vim/bundle/Vundle.vim
599
600 call vundle#begin()
601
602 " 另一种选择, 指定一个vundle安装插件的路径
603
604 "call vundle#begin(‘~/some/path/here‘)
605
606 " 让vundle管理插件版本,必须
607
608 Plugin ‘VundleVim/Vundle.vim‘
609
610 Plugin ‘Valloric/YouCompleteMe‘
611
612 Plugin ‘scrooloose/nerdtree‘
613
614 " " 以下范例用来支持不同格式的插件安装.
615
616 " " 请将安装插件的命令放在vundle#begin和vundle#end之间.
617
618 " " Github上的插件
619
620 " " 格式为 Plugin ‘用户名/插件仓库名‘
621
622 " Plugin ‘tpope/vim-fugitive‘
623
624 " " 来自 http://vim-scripts.org/vim/scripts.html 的插件
625
626 " " Plugin ‘插件名称‘ 实际上是 Plugin ‘vim-scripts/插件仓库名‘
627
628 " 只是此处的用户名可以省略
629
630 " Plugin ‘L9‘
631
632 " " 由Git支持但不再github上的插件仓库 Plugin ‘git clone 后面的地址‘
633
634 " Plugin ‘git://git.wincent.com/command-t.git‘
635
636 " " 本地的Git仓库(例如自己的插件) Plugin ‘file:///+本地插件仓库绝对路径‘
637
638 " Plugin ‘file:///home/gmarik/path/to/plugin‘
639
640 " " 插件在仓库的子目录中.
641
642 " " 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
643
644 " Plugin ‘rstacruz/sparkup‘, {‘rtp‘: ‘vim/‘}
645
646 " " 安装L9,如果已经安装过这个插件,可利用以下格式避免命名冲突
647
648 " Plugin ‘ascenator/L9‘, {‘name‘: ‘newL9‘}
649
650 " 你的所有插件需要在下面这行之前
651
652 call vundle#end()            " 必须
653
654 filetype plugin indent on    " 必须
655
656 " 加载vim自带和插件相应的语法和文件类型相关脚本
657
658 " 忽视插件改变缩进,可以使用以下替代:
659
660 "filetype plugin on
661
662 "
663
664 " 常用的命令
665
666 " :PluginList      - 列出所有已配置的插件
667
668 " :PluginInstall  - 安装插件,追加 `!` 用以更新或使用 :PluginUpdate
669
670 " :PluginSearch foo - 搜索 foo ; 追加 `!` 清除本地缓存
671
672 " :PluginClean      - 清除未使用插件,需要确认; 追加 `!`
673
674 " 自动批准移除未使用插件
675
676
677
678 "-----------------youcompleteme-----------------"
679
680 "默认配置文件路径"
681
682 let g:ycm_global_ycm_extra_conf = ‘~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py‘      "配置全局路径
683
684 "log"
685
686 let g:ycm_server_keep_logfiles=1
687
688 let g:ycm_sever_log_level=‘debug‘
689
690 "打开vim时不再询问是否加载ycm_extra_conf.py配置"
691
692 "let g:ycm_confirm_extra_conf=0
693
694 "set completeopt=longest,menu
695
696 "python解释器路径"
697
698 let g:ycm_path_to_python_interpreter=‘/usr/bin/python‘
699
700 "let g:ycm_python_binary_path = ‘/home/wdh/anaconda3/bin/python3‘  "python 环境
701
702 "是否开启语义补全"
703
704 let g:ycm_seed_identifiers_with_syntax=1
705
706 "是否在注释中也开启补全"
707
708 let g:ycm_complete_in_comments=1
709
710 let g:ycm_collect_identifiers_from_comments_and_strings = 0
711
712 "开始补全的字符数"
713
714 let g:ycm_min_num_of_chars_for_completion=2
715
716 "补全后自动关机预览窗口"
717
718 "let g:ycm_autoclose_preview_window_after_completion=1
719
720 "禁止缓存匹配项,每次都重新生成匹配项"
721
722 let g:ycm_cache_omnifunc=0
723
724 "字符串中也开启补全"
725
726 let g:ycm_complete_in_strings = 1
727
728 let g:ycm_seed_identifiers_with_syntax=1 "补全关键字
729
730 "离开插入模式后自动关闭预览窗口"
731
732 autocmd InsertLeave * if pumvisible() == 0|pclose|endif
733
734 "设置C 系列语言格式配置文件路径
735
736 let g:ycm_global_ycm_extra_conf = "~/.vim/plugged/YouCompleteMe/.ycm_c-c++_conf.py"
737
738 "按下2个字母后自动语意补全(检测上下文环境)
739
740 let g:ycm_semantic_triggers =  {
741
742 \ ‘c,cpp,python,java,go,erlang,perl‘: [‘re!\w{2}‘],
743
744 \ ‘cs,lua,javascript‘: [‘re!\w{2}‘],
745
746 \ }
747
748 "设置提示高亮背景颜色
749
750 highlight PMenu ctermfg=0 ctermbg=242 guifg=black guibg=darkgrey
751
752 highlight PMenuSel ctermfg=242 ctermbg=8 guifg=darkgrey guibg=black
753
754 "文件类型白名单,这些文件后缀会被解析
755
756 let g:ycm_filetype_whitelist = {
757
758 \ "c":1,
759
760 \ "h":1,
761
762 \ "py":1,
763
764 \ "cpp":1,
765
766 \ "hpp":1,
767
768 \ "objc":1,
769
770             \ "sh":1,
771
772 \ "zsh":1,
773
774 \ "zimbu":1,
775
776 \ }
777
778 "回车即选中当前项"
779
780 " inoremap <expr> <CR>      pumvisible() ? ‘<C-y>‘ : ‘\<CR>‘
781
782 "上下左右键行为"
783
784 inoremap <expr> <Down>    pumvisible() ? ‘\<C-n>‘ : ‘\<Down>‘
785
786 inoremap <expr> <Up>      pumvisible() ? ‘\<C-p>‘ : ‘\<Up>‘
787
788 inoremap <expr> <PageDown> pumvisible() ? ‘\<PageDown>\<C-p>\<C-n>‘ : ‘\<PageDown>‘
789
790 inoremap <expr> <PageUp>  pumvisible() ? ‘\<PageUp>\<C-p>\<C-n>‘ : ‘\<PageUp>‘791
792 "--------------NERD TREE SETTING---------------
793
794 "自动启动文件树
795
796 autocmd vimenter * NERDTree
797
798 "设置快捷按键打开关闭文件树
799
800 map <C-t> :NERDTreeToggle<CR>
801
802 "关闭vim时,如果打开的文件除了NERDTree没有其他文件时,它自动关闭,减少多次按:q!
803
804 autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType")&&b:NERDTreeType == "primary") | q | endif

贴图:

原文地址:https://www.cnblogs.com/kimalittlestar/p/11557835.html

时间: 2024-10-07 23:39:21

vim安装 YCM 过程记录的相关文章

redhat6.0 安装ORACLE11GR2过程记录

vawaretools安装 我的是8.0vm 1,vm=>install vmtools 2,会在redhat里出现一个虚拟光驱图标. 3,复制里面的文件到root目录下. 4,解压缩文件 tar -XXXXX 5,打开终端用命令进入相应目录. 6,执行./vmwareXXXXXX,注意./后面没有空格 7,一路回车, 最后安装成功. 挂载光盘 查看磁盘情况如下: [[email protected] ~]# df -h Filesystem            Size  Used Avai

Python 安装pyMySQL过程记录

在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装. PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL. 如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL: $ pip3 install PyMySQL 如果你的系统不支持 pip 命令,可以使用以下方式安装: 1.使用 git 命令下载安装包安装(你也可以手动下载): $ git clone https://github.com/PyMySQL/PyMySQL $ cd

linux 下vim安装ycm插件出现 Your C++ compiler does NOT support C++11

ycm被誉为vim里最好用的补全插件,忍不住想试一下,跟着安装步骤,走到这一步的时候 一直出现 Your C++ compiler does NOT support C++11 的错误 去github的ycm里查issue,发现有人遇到了跟我一样的问题,处理方式如下 我看了自己电脑里的gcc的版本,发现居然是4.4.7的,老的不能支持c++11,于是先去更新了gcc到4.8,网上有方法. 然后用 rpm -qa | grep c++ 的命令,找了一下c++的包,rpm -ql + 包名,找到了c

阿里云云服务器 centos 7.4 安装mysql 过程记录

写在前面 1.centos中service指令被systemctl指令所取代,查看各服务的运行状态需要换systemctl来做 2.mysql使用systemctl的方式启动没有成功,是用mysqld --defaults-file=/path --user=mysql指令启动成功的 3.在linux中安装的版本应该是linux generic版本,所以去mysql下载的时候,就选linux generic版本 4.centos中的防火墙不再是iptables,被替换成了firewalld 5.

VirtualBox中安装CentOS7过程记录

在开发过程中常常需要进行一些预研,而有些操作对操作系统可能具有破坏性且是不可恢复的,或者需要在不同的操作系统中去观察结果,虽然在某些场合下Ghost可以解决一部分问题,但是有时候很繁琐,因此在虚拟机中进行测试不失为一种不错的选择.自2011年以来,一直在学习一些有关Linux下的知识,包括Mono+XSP运行ASP.NET程序,搭建Hadoop学习环境.Nginx测试环境等.在虚拟机软件方面先后尝试过VMware.Hyper-V及VirtualBox,最终选择了VirtualBox,理由是开源免

cygwin 安装openresty过程记录

步骤: 1,cygwin最新版本. 2,cygwin安装模块:gcc, make, openssl, pcre, readline, perl, wget, unzip, sqlite.(应该是全的,在后面编译安装软件的时候会提示缺少的模块或命令,后续可以再装的) 3,cygwin手工下载源码编译安装:luarocks, lua5.1.5, 然后运行luarocks install xx命令安装其他模块(如 lsqlite3)等. 4,ngx_openresty1.7.10.2编译安装.参照(h

安装scikit-learn过程记录

环境:Windows 10 X64企业版. 安装python2.7: 官网下载python-2.7.12.amd64.msi安装文件,过程不赘述.安装完成后在PATH环境变量中加入%PYTHON_HOME% 安装pip: 把D:\Python27\Scripts也加到PATH环境变量. easy_install和pip easy_insall的作用和perl中的cpan,ruby中的gem类似,都提供了 在线一键安装模块的傻瓜方便方式,而pip是easy_install的改进版,提供更好的提示信

CentOS 6.5 安装mysql 过程记录

下载的时候一定选对应的版本, el6 还是el7 或者其他版本,不然会出现意向不到的惊喜 比如:我刚开始的时候下载的 el7 版本的 mysql , 然后安装的时候 就会出现: libc.so.6(GLIBC_2.14)(64bit) is needed by MySQL-server-5.5.62-1.el7.x86_64 libc.so.6(GLIBC_2.17)(64bit) is needed by MySQL-server-5.5.62-1.el7.x86_64 然后我根据这个线索,去

安装rabbitMQ过程记录

C:\Users\flycatony> cd C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.2\sbinC:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.2\sbin>rabbitmq-plugins enable rabbitmq_management Enabling plugins on node [email protected]: rabbitmq_management