neovim的配置
這里列出我自己使用的init.vim
,如果插件無法安裝,請按照github倉庫中給出的解決方法解決(手動clone安裝即可)。
參考了github倉庫在給出的鏈接文檔。
call plug#begin('~/.vim/plugged')
Plug 'crusoexia/vim-monokai'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes' "airline 的主題
Plug 'luochen1990/rainbow'
Plug 'preservim/nerdtree'
Plug 'Xuyuanp/nerdtree-git-plugin'
Plug 'majutsushi/tagbar'
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'honza/vim-snippets'
Plug 'neoclide/coc.nvim'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()
"=============================================================
colo monokai
"============================================================
" 設置狀態欄
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#left_alt_sep = '|'
let g:airline#extensions#tabline#buffer_nr_show = 0
let g:airline#extensions#tabline#formatter = 'default'
let g:airline_theme = 'desertink' " 主題
let g:airline#extensions#keymap#enabled = 1
let g:airline#extensions#tabline#buffer_idx_mode = 1
let g:airline#extensions#tabline#buffer_idx_format = {
\ '0': '0 ',
\ '1': '1 ',
\ '2': '2 ',
\ '3': '3 ',
\ '4': '4 ',
\ '5': '5 ',
\ '6': '6 ',
\ '7': '7 ',
\ '8': '8 ',
\ '9': '9 '
\}
" 設置切換tab的快捷鍵 <\> + <i> 切換到第i個 tab
nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9
" 設置切換tab的快捷鍵 <\> + <-> 切換到前一個 tab
nmap <leader>- <Plug>AirlineSelectPrevTab
" 設置切換tab的快捷鍵 <\> + <+> 切換到后一個 tab
nmap <leader>+ <Plug>AirlineSelectNextTab
" 設置切換tab的快捷鍵 <\> + <q> 退出當前的 tab
nmap <leader>q :bp<cr>:bd #<cr>
" 修改了一些個人不喜歡的字符
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
let g:airline_symbols.linenr = "CL" " current line
let g:airline_symbols.whitespace = '|'
let g:airline_symbols.maxlinenr = 'Ml' "maxline
let g:airline_symbols.branch = 'BR'
let g:airline_symbols.readonly = "RO"
let g:airline_symbols.dirty = "DT"
let g:airline_symbols.crypt = "CR"
"======================================================================
" brackets related
let g:rainbow_active = 1
let g:rainbow_conf = {
\ 'guifgs': ['darkorange3', 'seagreen3', 'royalblue3', 'firebrick'],
\ 'ctermfgs': ['lightyellow', 'lightcyan','lightblue', 'lightmagenta'],
\ 'operators': '_,_',
\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'],
\ 'separately': {
\ '*': {},
\ 'tex': {
\ 'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/'],
\ },
\ 'lisp': {
\ 'guifgs': ['darkorange3', 'seagreen3', 'royalblue3', 'firebrick'],
\ },
\ 'vim': {
\ 'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/', 'start=/{/ end=/}/ fold', 'start=/(/ end=/)/ containedin=vimFuncBody', 'start=/\[/ end=/\]/ containedin=vimFuncBody', 'start=/{/ end=/}/ fold containedin=vimFuncBody'],
\ },
\ 'html': {
\ 'parentheses': ['start=/\v\<((area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)[ >])@!\z([-_:a-zA-Z0-9]+)(\s+[-_:a-zA-Z0-9]+(\=("[^"]*"|'."'".'[^'."'".']*'."'".'|[^ '."'".'"><=`]*))?)*\>/ end=#</\z1># fold'],
\ },
\ 'css': 0,
\ }
\}
"===============================================================================
" nerdtree <F3>
autocmd vimenter * NERDTree "自動開啟Nerdtree
let g:NERDTreeWinSize = 25 "設定 NERDTree 視窗大小
let NERDTreeShowBookmarks=1 " 開啟Nerdtree時自動顯示Bookmarks
"打開vim時如果沒有文件自動打開NERDTree
" autocmd vimenter * if !argc()|NERDTree|endif
"當NERDTree為剩下的唯一窗口時自動關閉
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" 設置樹的顯示圖標
let g:NERDTreeDirArrowExpandable = '+'
let g:NERDTreeDirArrowCollapsible = '-'
let NERDTreeIgnore = ['\.pyc$'] " 過濾所有.pyc文件不顯示
let g:NERDTreeShowLineNumbers=0 " 是否顯示行號
let g:NERDTreeHidden=0 "不顯示隱藏文件
""Making it prettier
let NERDTreeMinimalUI = 1
let NERDTreeDirArrows = 1
nnoremap <F3> :NERDTreeToggle<CR> " 開啟/關閉nerdtree快捷鍵
"===============================================================================
" tagbar <F4>
let g:tagbar_width=30
nnoremap <silent> <F4> :TagbarToggle<CR> " 將tagbar的開關按鍵設置為 F4
vim的簡單使用
這里包括了我個人使用頻率較高的vim指令,用作參考
打開文件 :e file
左下上右 hjkl
水平分割並顯示另一個文件 :split file
當前窗口垂直分割 :vsplit
垂直分割出新窗口 :vne
水平窗口大小調節 C+w +/- n
垂直窗口大小調節 C+w </> n
切換窗口 左下上右 C+w h/j/k/l
w 下一個單詞頭
e 上一個單詞尾
- 上一行第一個非空白字符
( 前移一句
{ 前移一段
0 移動到行首
^ 移動到本行第一個非空白字符
$ 移動到行尾
nG 到文件第n行
:n<cr> 移動到第n行
C+f 下翻一屏
C+b 上翻一屏
C+d 下翻半屏
C+u 上翻半屏
C+e 向下滾動一行
C+y 向上滾動一行
zz 當前行移動到屏幕中央
zt 當前行移動到屏幕頂端
zb 當前行移動到屏幕底端
c[n]w 改光標后1(n)個詞
c[n]l 改光標后n個字母
/something 在后面的文本中查找something
?something 在前面的文本中查找something
n 向后查找
N 向前查找
:s/old/new 用new替換當前行的第一個old
:s/old/new/g 用new替換當前行的所有old
:n1 n2s/old/new/g 用new替換n1到n2行的所有old
:%s/ols/new/g 用new替換文件中所有的old
:%s/^/xxx/g 在每一行的行首插入xxx
:%s/$/xxx/g 在每一行的行尾插入xxx
[range]g/pattern/command 匹配到某個模式后執行某種命令
%g/^ xyz/normal dd
關於range的規定為:
如果不指定range,則表示當前行。
m,n : 從m行到n行。
0 : 最開始一行(可能是這樣)。
$ : 最后一行
. : 當前行
% : 所有行
:set spell 開啟拼寫檢查功能
:set nospell 關閉拼寫檢查功能
]s 移到下一個拼寫錯誤的單詞
[s 作用與上一命令類似,但它是從相反方向進行搜索
z= 顯示一個有關拼寫錯誤單詞的列表,可從中選擇
zg 告訴拼寫檢查器該單詞是拼寫正確的
zw 與上一命令相反,告訴拼寫檢查器該單詞是拼寫錯誤的
:e ++enc=utf8 filename 讓vim用utf-8的編碼打開這個文件。
:w ++enc=gbk 不管當前文件什么編碼,把它轉存成gbk編碼。
:set fenc或:set fileencoding 查看當前文件的編碼。
在vimrc中添加set fileencoding=ucs-bom,utf-8,cp936 vim會根據要打開的文件選擇合適的編碼。 注意:編碼之間不要留空格。 cp936對應於gbk編碼。 ucs-bom對應於windows下的文件格式。
:e ++ff=dos filename 讓vim用dos格式打開這個文件。
:w ++ff=mac filename 以mac格式存儲這個文件。
:set ff 顯示當前文件的格式。
:set ff=format 設置格式
在vimrc中添加set fileformats=unix,dos,mac,讓vim自動識別文件格式。
gd 跳轉到局部變量的定義處;
gD 跳轉到全局變量的定義處,從當前文件開頭開始搜索;
g; 上一個修改過的地方;
g, 下一個修改過的地方;
[[ 跳轉到上一個函數塊開始,需要有單獨一行的{。
]] 跳轉到下一個函數塊開始,需要有單獨一行的{。
[] 跳轉到上一個函數塊結束,需要有單獨一行的}。
][ 跳轉到下一個函數塊結束,需要有單獨一行的}。
[{ 跳轉到當前塊開始處;
]} 跳轉到當前塊結束處;
[/ 跳轉到當前注釋塊開始處;
]/ 跳轉到當前注釋塊結束處;
% 不僅能移動到匹配的(),{}或[]上,而且能在#if,#else, #endif之間跳躍。
C-x C-s 拼寫建議。
C-x C-v 補全vim選項和命令。
C-x C-l 整行補全。
C-x C-f 自動補全文件路徑。彈出菜單后,按C-f循環選擇,當然也可以按 C-n和C-p。
C-x C-p 和C-x C-n 用文檔中出現過的單詞補全當前的詞。 直接按C-p和C-n也可以。
C-x C-o 編程時可以補全關鍵字和函數名啊。
C-x C-i 根據頭文件內關鍵字補全。
C-x C-d 補全宏定義。
C-x C-n 按緩沖區中出現過的關鍵字補全。 直接按C-n或C-p即可。
當彈出補全菜單后:
C-p 向前切換成員;
C-n 向后切換成員;
C-e 退出下拉菜單,並退回到原來錄入的文字;
C-y 退出下拉菜單,並接受當前選項。
函數,變量跳轉
apt-get install ctags
ctags -R *
C+] 跳轉
C+t 返回