neovim環境與vim簡單使用


Github倉庫

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 返回


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM