zoukankan      html  css  js  c++  java
  • 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 返回
    
  • 相关阅读:
    Java再学习——栈(stack)和堆(heap)
    Java再学习——深究static关键字
    毕业设计进度:3月4日
    毕业设计进度:3月3日
    可视化组件:echarts柱状图添加点击事件
    毕业设计进度:2月29日
    毕业设计进度:2月28日
    毕业设计进度:2月27日
    毕业设计进度:2月26日
    毕业设计进度:2月25日
  • 原文地址:https://www.cnblogs.com/oasisyang/p/15662956.html
Copyright © 2011-2022 走看看