neovim环境与vim简单使用
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 返回