linux基础-vim插件使用

vim中buffer、window、tag概念

  • Buffer:
    vim中的buffer概念就是打开了一个文件的内存中的缓存,vim每打开一个文件,将创建一个buffer,一个文件唯一对应一个buffer,当用vim连续打开多个文件的时候,再关闭其中的文件的时候,buffer并没有关闭,依然存在;直到关闭vim才清除所有buffers。vim中可用命令

   buffers 或者 ls:查看存在的buffer
   bnext、bprevious、blast、bfirst:显示下一个、前一个、最后一个、第一个buffer
   bdelete:将缓冲区从buffers列表中删除,buffers!还是会让它再度现身
   bwipe:彻底删除缓冲区


  • window:
    window只是负责显示缓存数据,当执行q,退出的是window,buffer依然存在。一个window只能显示一个buffer,一个buffer可以在多个window上显示。

  • tag:
    tag就是window的集合,是一种布局。不同tag之间的window是相互不影响。


vundle

  • 功能:管理插件的插件
  • GitHub项目地址
  • 安装:git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/Vundle.vim
  • .vimrc的配置:
    (1)这段配置需要放在.vimrc最前面
    (2) 添加的插件需要放在 call vundle#begin()和 call vundle#end() 之间
set nocompatible              " be iMproved, required
filetype off                  " required

set rtp+=~/.vim/bundle/Vundle.vim


call vundle#begin()
Plugin 'VundleVim/Vundle.vim'

"中间添加需要安装的插件


call vundle#end()            " required
filetype plugin indent on    " required

"所有其他配


  • 安装插件
    1. 在.vimrc中 vundle#begin() 和 vundle#end() 之间添加安装的插件,格式如下:
1.托管在GitHub上:
   Plugin '用户名/仓库名'     例子:   Plugin 'scrooloose/nerdtree'     
   
2.插件在本地仓库:
  Plugin 'file:///home/gmarik/path/to/plugin'  
  
3.  插件从"https://www.vim.org/scripts/"安装
	Plugin '插件名'

  2. 打开vim,运行:PluginInstall         或者直接运行:vim +PluginInstall +qall


  • 清除插件
    1. 把.vimrc中的想删除插件的一行 删除
    2. 打开vim,运行:PluginClean

功能命令
安装插件PluginInstall
清除插件PluginClean
查看帮助h Vundle
更新插件PluginUpdate
列出插件PluginList
  • 常用插件

Plugin 'VundleVim/Vundle.vim'           "中间添加需要安装的插件 
Plugin 'scrooloose/nerdtree'
Plugin 'scrooloose/nerdcommenter'
Plugin 'jiangmiao/auto-pairs'
Plugin 'vim-airline/vim-airline'
Plugin 'mhinz/vim-startify'
Plugin 'majutsushi/tagbar'
Plugin 'Valloric/YouCompleteMe'



NERDTree

  • 显示目录树

  • github项目地址

  • 安装:git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle/NERDTree
    或者通过Vundle安装:Plugin 'scrooloose/nerdtree'

  • 使用:?:打开帮助文档,再按一次退出帮助文档

1. 文件添加、删除

r/R:刷新光标所在的目录 / 根目录
m:打开目录(针对文件操作)

  ma:当前文件夹下新建文件(目录在名字后面加 /)
  mm:重命名/移动当前文件
  md:删除当前文件
  mc:复制当前文件到其他地方
。。。。。。。。。具体再查看。。。。。。。。。


2.打开文件

o/go:以buffer的形式打开文件,后者光标还停留在nerdtree中
s/gs:垂直分屏打开,后者光标在nerdtree中


3. 目录操作
O:递归打开当前目录
X:递归关闭子目录
x:收起父目录

cd:改变 选择的目录当前目录
C:改变 选择的目录 为 根目录 (根目录只是针对NERDTree而言)
CD:改变当前目录根目录
u/U:将上级目录设为根目录,U的话保持原来打开的状态


4.目录的移动
P(大): 去root目录
p(小):去父目录
K:去第一个同级目录
J:去最后一个同级目录

  • .vimrc的配置
map <leader>t :NERDTreeToggle<CR>  "\t 打开关闭NERDTree
let NERDTreeShowLineNumbers=1  "NERDTree显示行号
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif "NERDTree是最后一个窗口,自动关闭
let NERDTreeIgnore=['\.pyc','\~$','\.swp']  "忽略带此后缀名的文件
"let g:nerdtree_tabs_open_on_console_startup=1 "如果安装了vim-nerdtree-tabs,tabs之间共享nerdtree
autocmd FileType nerdtree noremap <buffer> <tab> <nop> "tab 键对于nerdtree窗口无效(防止在nerdtree窗口切换buffer)
autocmd FileType nerdtree noremap <buffer> <S-tab> <nop>"Shift-tab 键对于nerdtree窗口无效



nerdcommenter

  • 功能:快速注释、解开注释

  • github地址

  • 安装 :通过Vundle :Plugin ‘scrooloose/nerdcommenter’

  • 使用:

  1. <leader>cc快捷键进行注释选中的行,<leader>cu进行反注释
  2. <leader>c<space> 在注释/非注释状态之间切换
  • .vimrc的配置
" Add spaces after comment delimiters by default
let g:NERDSpaceDelims = 1

let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } }  "自定义注释符


let g:NERDDefaultAlign = 'left'             "左对齐 注释符
let g:NERDCompactSexyComs = 1      " 和上一个一起使用,多行注释 ,注释符全部都在行首

let g:NERDTrimTrailingWhitespace = 1    "uncomment的时候,修减行末的空格




vim-startify

  • 功能:vim起始页
  • github地址
  • 安装 :通过Vundle :Plugin ‘mhinz/vim-startify’
  • .vimrc的配置
let g:startify_files_number = 5  "每个列表长度
let g:startify_session_autoload = 1 "自动会话

" 设置书签
let g:startify_bookmarks = [       
            \ '~/Project/test.cpp',
            \]

" 设置头部信息
let g:startify_custom_header = [
            \ '                                  ',
            \ '            __                 ',
            \ '    __  __ /\_\    ',
            \ '   /\ \/\ \\/\ \ /'' __` _',
            \ '   \ \ \_/\ \',
            \ '    \ \\ \_\   ',
            \ '     \/__/    \/_/\/_    ',
            \ '                              ',
            \ ]




YouCompleteMe(强大)

  • 功能:自动补全
  • github地址
  • 安装(时间有点长) :通过Vundle :Plugin ‘Valloric/YouCompleteMe’

步骤(失败再参照github详细说明):

  1. sudo apt install build-essential cmake python3-dev
  2. cd ~/.vim/bundle/YouCompleteMe
  3. python3 install.py --clang-completer(可能也有不成功的时候)
  4. cd ~/.vim/YouCompleteMe/third_party/ycmd/.ycm_extra_conf.py
  5. 打开.ycm_extra_conf.py文件,在flags里面的最下面添加(如需要补全其他库,按照格式添加即可,注意后面 有逗号
'-isystem',
'/usr/include/c++/5.4.0',
'-isystem',
'/usr/include/x86_64-linux-gnu/c++',
'-isystem',
'/usr/include',
'-isystem',
'/usr/include',
'-isystem',
'/usr/include/eigen3',
'-isystem',
'/usr/local/include/opencv4',
'-isystem',
'/usr/local/include/pcl-1.9',

  1. 配置.vimrc let g:ycm_global_ycm_extra_conf = '~/.vimrc/YouCompleteMe/third_party/ycm/.ycm_extra_conf.py'
  • .vimrc的配置
nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>"定义申明之间跳转
set completeopt-=preview " 在接受补全后不分裂出一个窗口显示接受的项
"let g:ycm_seed_identifiers_with_syntax = 1"关键字补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释与字符串中的内容也用于补全
let g:ycm_complete_in_comments = 1                          " 在注释输入中也能补全
let g:ycm_complete_in_strings = 1                           " 在字符串输入中也能补全
let g:ycm_show_diagnostics_ui = 0                           " 禁用语法检查



vim-airline

  • 功能:界面美化,显示buffer等

  • github地址

  • 安装 :通过Vundle :Plugin ‘vim-airline/vim-airline’

  • .vimrc的配置

" Enable the list of buffers
let g:airline#extensions#tabline#enabled = 1

" Show just the filename 
let g:airline#extensions#tabline#fnamemod = ':t'

map <leader>1 <Plug>AirlineSlectTab1 "\1 映射成 :选择第一个buffer
map <leader>2 <Plug>AirlineSlectTab2
map <leader>3 <Plug>AirlineSlectTab3
map <leader>4 <Plug>AirlineSlectTab4
map <leader>5 <Plug>AirlineSlectTab5
map <leader>6 <Plug>AirlineSlectTab6
map <leader>7 <Plug>AirlineSlectTab7
map <leader>8 <Plug>AirlineSlectTab8
map <leader>9 <Plug>AirlineSlectTab9





auto-pairs

  • 功能:自动补全括号

  • github地址

  • 安装 :通过Vundle :Plugin ‘jiangmiao/auto-pairs’

  • .vimrc的配置

let g:AutoPairsFlyMode =1  "飞行模式开启,默认不开启,可以跨括号跳出,如  ([foo|])  按)之后会直接跳出来 ([foo]) |
let g:AutoPairsMapSpace = 1 " 把SPACE键映射为在括号两侧添加空格



ctags

  • 功能:函数、变量的跳转
  • 安装:

  这个并不是插件,而是可执行程序,是用来对代码建索引,方便查找的,有些Linux版本是自带ctags的,如果没有,按如下方式安装:sudo apt-get install ctags

  • 生成ags:

递归当前目录中所有文件tags:ctags -R
特定的文件:ctags *.c *.h
系统库tags:ctags -I __THROW --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --fields=+S -R -f ~/.vim/systags /usr/include /usr/local/include
C++文件tags:ctags -I __THROW -I __THROWNL -I __attribute_pure__ -I __nonnull -I __attribute__ -R --c++-kinds=+px --fields=+iaS --extra=+q

  • .vimrc中设置:

set tags+=~/.vim/systags

  • 操作:

Ctrl+]:跳到定义处
Ctrl+o/t:跳回上次处
:tn 下一个
:tp 上一个
:ts 列出所有




tagbar

  • 功能:函数、变量的查看
  • github地址
  • 安装 :通过Vundle :Plugin ‘majutsushi/tagbar’
  • tagbar的操作:
  1.   o : 折叠与展开切换
  2.   =:折叠所有标签
  3.   *:展开所有标签

  1. Ctrl :回车跳到定义处(在文件的window中)
  2. p:跳到定义处,但是光标还在tagbar中
  3. Ctrl+N:跳到下一个标签的顶端
  4. Ctrl+P:跳到上一个标签的顶端(或者当前标签)
  • .vimrc的配置
nmap <F8> :TagbarToggle<CR>    " F8(有的笔记本是Fn+F8)打开关闭tagbar
let g:tagbar_ctags_bin = 'usr/bin/ctags'     " tagbar依赖ctags(先安装)
let g:tagbar_autofocus = 1    "打开tagbar的时候,跳到tagbar的窗口,默认在文件窗口
autocmd BufReadPost *.cpp,*.c,*.h,*.hpp call tagbar#autoopen()  "打开以下文件自动打开tagbar
"let g:tagbar_left = 1       让tagbar在页面左侧显示,默认右边
"let g:tagbar_width = 30      设置tagbar的宽度为30列,默认40



vim-autoformat

  • 功能:格式化代码
  • github地址
  • 安装 :通过Vundle :Plugin ‘Chiel92/vim-autoformat’
  • 使用
  1. 使用之前你得下载自动格式的工具:对于C C++可以使用clang-format(需要安装:sudo apt-get install clang-format)
  2. 在自己工程根目录下,建立.clang-format文件,在里面自定义格式(具体查看官网)
BasedOnStyle: LLVM
PointerAlignment: Left "指针在左边,如: int* p=NULL;
SpacesInParentheses : true  " 小括号()两边添加空格
SpacesInSquareBrackets: false  "中括号 []两边空格
AlignTrailingComments: true "注释对齐
BreakBeforeBraces: Custom
BraceWrapping:
  AfterClass: true
  AfterFunction: true
  AfterControlStatement: true
  AfterEnum: true
  AfterNamespace: true
  AfterStruct: true
  AfterUnion: true
  BeforeCatch: true
  BeforeElse: true
  

AccessModifierOffset: 0
IndentCaseLabels: true
IndentWidth: 4
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: true
AllowShortFunctionsOnASingleLine: true
ColumnLimit: 1000
AlignOperands: false
  • .vimrc
noremap <F3> :Autoformat<CR> " 将F3映射为格式化
au BufWrite * :Autoformat  " 保存的时候 格式化
let g:clang_format#auto_format=1 " 自动检测.clang-format作为配置的格式

NOTE:自己编写代码不太实用,灵活性不强,但是在阅读别人的源码,如果格式和你的习惯不一样,你可以用它来进行格式化。

clang-format -i main.cpp -style=file "将main.cpp 按照工程的根目录下你自定义.clang-format格式化



vim-copyright

  • 功能:添加文件头
  • 地址:github
  • 安装:通过Vundle :Plugin 'nine2/vim-copyright
  • 使用说明(按照下面的.vimrc设置):
  1. 新建文件自动添加文件头
  2. 修改文件,跟新文件头的时间,文件名
  3. 打开已有的文件,添加文件头
  • vimrc
"vim-copyright
let g:file_copyright_name = "julian Andrison"    
let g:file_copyright_email = "15544925950@163.com"
let g:file_copyright_auto_filetypes = ['sh', 'plx', 'pl', 'pm', 'py', 'python', 'h', 'hpp', 'c', 'cpp', 'java'] "新建这些文件的时候会自动添加文件头

nnoremap <leader>a :CopyrightAdd<CR>          "在现有的文件添加
nnoremap <leader>u :CopyrightUpdate<CR>       "跟新现有的文件



DoxygenToolkit 函数注释

  • 功能:生成函数的注释

  • 地址:vim.org

  • 安装:通过Vundle :Plugin 'DoxygenToolkit.vim'

  • 使用说明(按照下面的.vimrc设置):

  • vimrc

"DoxygenToolkit.vim
let g:DoxygenToolkit_briefTag_funcName = "yes"
let g:DoxygenToolkit_briefTag_pre = "@brief: "
let g:DoxygenToolkit_paramTag_pre="@param: " 
let g:DoxygenToolkit_returnTag="@returns: "

nnoremap <leader>d :Dox<CR>



cscope




  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值