安裝VIM
安裝YouCompleteMe
的時候, 需要VIM
的版本比較高, 一般一些Linux
長期支持版的Vim
包就比較老, 所以可能需要編譯安裝.
卸載之前系統中安裝的版本:
CentOS/Fedora
sudo yum remove vim -y
Debian/Ubuntu
sudo apt autoremove vim -y
Vim ftp, 查找需要的版本, 一般選擇最新版本就行了.
下載, 解壓后, 進入目錄中的src
目錄. 如果使用默認的配置的話, 那么直接運行:
make
sudo make install
想自定義的話, 需要使用./configure
重新編譯.
./configure --with-features=huge --enable-pythoninterp
--with-features=huge
: 最大的特性支持.--enable-pythoninterp
: 啟用Vim
對Python
的支持, 默認Vim
是不支持Python
的.
然后重新執行:
make
sudo make install
卸載安裝的Vim
, 在src
目錄中執行sudo make uninstall
. 如果想要重新編譯的話, 那么需要清除之前編譯的文件make distclean
.
將VIM配置為輕量級IDE
YouCompleteMe
需要系統安裝ctags
, gcc
, gcc-c++
, python-devel
, cmake
。
YouCompleteMe
如果報錯The ycmd server SHUT DOWN...
, 那么進入~/.vim/bundle/YouCompleteMe
目錄下, 執行./install.py
克隆VundleVim
到~/.vim/bundle
, 會自動創建目錄.
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
首先在vim
的配置文件~/.vimrc
中關閉兼容模式和文件類型檢測, 直接在文件中追加:
set nocompatible
filetype off
VundleVim
管理插件YouCompleteMe
代碼自動補全vim-airline
增強狀態欄和標簽欄Tagbar
查看函數和變量的定義NERDTree
文件目錄樹identline
顯示縮進的對齊線delimitMate
自動補全括號和引號Cscope
代碼閱讀
還支持兩種插件類型:
" 非 github 倉庫的插件
Plugin 'git://git.wincent.com/command-t.git'
" 本地倉庫的插件
Plugin 'file:///home/lei/plugin'
VundleVim
的簡單命令, 在vim
的命令模式中執行, 例如(:PluginInstall
):
PluginList
: 列出安裝的插件PluginInstall
: 根據配置文件安裝插件PluginUpdate
: 更新插件PluginSearch [name]
: 查找名為 [name] 的插件PluginClean
: 清除無用的插件
保存.vimrc
, 在命令模式
中輸入:PluginInstall
, 安裝配置的需要安裝的插件。
VIM配置文件
如果不安裝插件那么直接復制基本
的配置內容就行了.
如果想全局生效, 那么在/etc/vimrc
中進入插入模式, 在文件最后面追加配置。
配置vim
" =======================
" vimrc配置
" =======================
" -----------------------
" => 基本
" -----------------------
" 顯示行號
set nu
" 高亮關鍵字
syntax on
" 使用鼠標
set mouse=a
" 搜索結果高亮顯示
set hlsearch
" 一個tab等於4個空格
set tabstop=4
set shiftwidth=4
" 表示Tab自動轉換成空格
set expandtab
" 智能對齊
set autoindent
set smartindent
" 解決刪除鍵不生效
set backspace=indent,eol,start
" 行尾結束符, 設置為unix
set fileformat=unix
" 文件編碼
" fenc=utf-8
" 配置粘貼不自動換行的快捷鍵
set pastetoggle=<F9>
" 允許折疊
set foldenable
" 手動折疊
set foldmethod=manual
" 自動保存
set autowrite
" 記錄歷史的行數
set history=10000
" 設置搜索時忽略大小寫
set ignorecase
" 高亮顯示光標所在的行和列
" 顯示顏色
set t_Co=256
set bg=dark
set cursorline
set cursorcolumn
" 自定義光標樣式
highlight CursorLine cterm=NONE ctermbg=black ctermfg=brown guibg=NONE guifg=NONE
highlight CursorColumn cterm=NONE ctermbg=black ctermfg=brown guibg=NONE guifg=NONE
" 顯示tab和空格
set list
" 設置tab和空格樣式
set lcs=tab:\|\ ,nbsp:%,trail:·
" 設定行首tab為灰色
highlight LeaderTab guifg=#666666
" 匹配行首tab
match LeaderTab /^\t/
" 輸入的命令顯示出來
set showcmd
" 啟動顯示狀態行(1),總是顯示狀態行(2)
set laststatus=2
" -----------------------
" => 安裝插件
" -----------------------
" 關閉vi兼容模式
set nocompatible
" 關閉文件類型檢測
filetype off
" 運行時路徑, 插件
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" 插件管理器
Plugin 'VundleVim/Vundle.vim'
" -----------------------
" => github 倉庫中的插件
" -----------------------
" 自動補全
Plugin 'Valloric/YouCompleteMe'
" 底欄和頂欄
Plugin 'vim-airline/vim-airline'
" 側邊欄顯示git修改
Plugin 'airblade/vim-gitgutter'
" 目錄樹顯示文件的git修改
Plugin 'Xuyuanp/nerdtree-git-plugin'
" -----------------------
" => vim-scripts 中的插件
" -----------------------
" 顯示文件中所有的函數和變量
Plugin 'Tagbar'
" 目錄樹
Plugin 'The-NERD-tree'
" 顯示tab對齊線
Plugin 'indentLine.vim'
" 符號自動補全
Plugin 'delimitMate.vim'
" 標簽提取
Plugin 'ctags.vim'
" 顏色主題
Plugin 'desert.vim'
" 顯示Python的虛擬環境
Plugin 'virtualenv.vim'
call vundle#end()
filetype plugin indent on
" -----------------------
" => 插件安裝完成后的配置
" -----------------------
" -----------------------
" ==> airline 標簽欄配置
" -----------------------
" 啟用powerline字體
let g:airline_powerline_fonts = 1
" 開啟標簽欄
let g:airline#extensions#tabline#enabled = 1
" 標簽欄路徑顯示
" let g:airline#extensions#tabline#formatter = "default"
" let g:airline#extensions#tabline#formatter = "jsformatter"
" let g:airline#extensions#tabline#formatter = "unique_tail_improved"
let g:airline#extensions#tabline#formatter = "unique_tail"
" -----------------------
" ==> YouCompleteMe配置
" -----------------------
" YouCompleteMe 默認tab, s-tab和自動補全沖突
let g:ycm_key_list_select_completion=['<c-n>']
let g:ycm_key_list_select_completion = ['<Down>']
let g:ycm_key_list_previous_completion=['<c-p>']
let g:ycm_key_list_previous_completion = ['<Up>']
set completeopt=longest,menu
" 關閉加載.ycm_extra_conf.py提示
let g:ycm_confirm_extra_conf=0
" 在注釋輸入中也能補全
let g:ycm_complete_in_comments = 1
" 在字符串輸入中也能補全
let g:ycm_complete_in_strings = 1
" 直接觸發自動補全
let g:ycm_key_invoke_completion = '<C-Space>'
" 顯示所有匹配
map <leader>gd :YcmDiags<CR>
" 跳轉到申明處
nnoremap <leader>gl :YcmCompleter GoToDeclaration<CR>
" 跳轉到定義處
nnoremap <leader>gf :YcmCompleter GoToDefinition<CR>
" 函數定義跳轉, 將光標定位到函數, 輸入gd 回車
nnoremap <leader>gg :YcmCompleter GoToDefinitionElseDeclaration<CR>
" -----------------------
" ==> Tagbar配置
" -----------------------
" 函數變量窗口, F3開啟和關閉
map <F3> :TagbarToggle<CR>
let tagbar_ctags_bin = 'ctags'
let tagbar_right = 1
let g:tagbar_width = 30
" tagbar一打開, 光標就在tagbar頁面內
let g:tagbar_autofocus = 1
" 設置標簽不排序,默認排序
let g:tagbar_sort = 0
" -----------------------
" ==> The-NERD-tree配置
" -----------------------
" 目錄樹, 使用F2開啟或關閉
map <F2> :NERDTreeToggle<CR>
let NERDTreeWinSize=30
" 自動開啟
" autocmd vimenter * NERDTree
" 是否顯示隱藏文件
let NERDTreeShowHidden=1
" 忽略一下文件的顯示
let NERDTreeIgnore=['\.pyc','\~$','\.swp']
" -----------------------
" ==> Xuyuanp/nerdtree-git-plugin配置
" -----------------------
let g:NERDTreeIndicatorMapCustom = {
\ "Modified" : "✹",
\ "Staged" : "✚",
\ "Untracked" : "✭",
\ "Renamed" : "➜",
\ "Unmerged" : "═",
\ "Deleted" : "✖",
\ "Dirty" : "✗",
\ "Clean" : "✔︎",
\ 'Ignored' : '☒',
\ "Unknown" : "?"
\ }
" -----------------------
" ==> vim-gitgutter配置
" -----------------------
" -----------------------
" ==> virtualenv.vim
" -----------------------
" 退出虛擬環境
" :VirtualEnvDeactivate
" 顯示所有虛擬環境
" :VirtualEnvList
" 激活虛擬環境
" :VirtualEnvActivate venv
" 可以使用tab選擇要激活的虛擬環境
" :VirtualEnvActivate <tab>
" 顯示幫助
" :help virtualenv
highlght
主要是用來配色的, 包括語法高亮等個性化的配置. 可以通過:h highlight
, 查看詳細信息.
CursorLine
和CursorColumn
分別表示當前所在的行列.
cterm
表示為原生vim
設置樣式, 設置為NONE表示可以自定義設置.
ctermbg
設置終端vim
的背景色.
ctermfg
設置終端vim
的前景色.
guibg
和guifg
分別是設置gvim
的背景色和前景色, 本人平時都是使用終端打開vim, 所以只是設置終端下的樣式.
推薦使用的顏色包括: black
, brown
, grey
, blue
, green
, cyan
, magenta
, yellow
, white
.