YCM(YouComplateMe) 屬於Vim中大神級的插件,提供了類似於巨硬爸爸的VS中的代碼補全,但是其安裝方式也是比較復雜,因此特意寫下一篇記錄,記錄下我自己如何安裝這一插件的過程;
- 檢查自己的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
- 安裝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
- 下載YouComplateMe源碼 等待編譯
git clone https://github.com/Valloric/YouCompleteMe.git ~/.vim/bundle/YouCompleteMe
- 下載YouComplateMe可能需要的安裝環境
下載需要的安裝環境需要跳轉到YouComplateMe所在目錄
cd ~/.vim/bundle/YouCompleteMe git submodule update --init --recursive
- 編譯YCM(YouComplateMe)
在YCM所在目錄下執行
./install.py --clang-completer
期間如果出現錯誤,參考:
https://www.cnblogs.com/dakewei/p/10491373.html 解決錯誤;
- 如果出現 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 }
- 將以上代碼寫入到這個文件
~/.ycm_c-c++_conf.py
- 打開 .vimrc 配置文件 加入如下語句:
let g:ycm_global_ycm_extra_conf = "~/.ycm_c-c++_conf.py"
- 安裝 NERDTree 插件顯示當前目錄下的目錄樹
cd ~/.vim/bundle git clone https://github.com/scrooloose/nerdtree.git
- 在.vimrc文件Vundle管理中添加插件
Plugin 'scrooloose/nerdtree'
- 添加相對應 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: kimalittlestar@gmail.com") 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: kimalittlestar@gmail.com ") 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
貼圖: