Vim使用常见插件安装

    技术2025-07-09  21

    一、前言

    各种IDE工具有代码提示以及可以方便切换到各个文件,所以也想在VIM上实现近似的功能。因为目前Linux开发都是在远程连接服务器进行开发,常用的远程连接工具:xshell、putty、MobaXterm等。虽然大部分Linux开发还是使用纯VIM开发,但是对于提高效率来说,安装需要的插件,仍然是有必要的。 本文主要讲述常用插件的安装:Bundle、YouCompleteMe、nerdtree、pathogen、tagbar、a.vim等。

    二、安装过程

    1、安装Bundle插件——插件管理

    git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/plugin/Vundle.vim 安装后,可以使用Plugin Install、PluginList、PluginSearch,用于插件安装等;

    2、安装a.vim——用于文件切换

    官网地址:https://www.vim.org/scripts/script.php?script_id=31,下载后的a.vim直接~/.vim/plugin/中,即可实现头文件和源文件进行切换; 操作: :A 头文件/源文件切换 :AS 分割窗后并切换头/源文件(切割为上下两个窗口) :AV 垂直切割窗口后切换头/源文件(切割为左右两个窗口) :AT 新建Vim标签式窗口后切换 :AN 在多个匹配文件间循环切换,将光标所在处单词作为文件名打开 :IH 切换至光标所在文件 :IHS 分割窗口后切换至光标所在文件(指将光标所在处单词作为文件名打开) :IHV 垂直分割窗口后切换 :IHT 新建标签式窗口后切换 :IHN 在多个匹配文件间循环切换

    3、YouCompleteMe的安装(重头戏)——实现补全,代码检查

    (1) 安装基础环境: sudo apt-get install vim ctags libpython3.6-dev (2) 安装apt-vim git clone https://raw.githubusercontent.com/egalpin/apt-vim,执行sh install.sh,执行成功后,会安装pathogen、tagbar两个插件; apt安装于~/.vimpkg/bin/apt-vim 目录,执行source ~/.bashrc环境变量中可进行调用。 (3) 安装nerdtree文件列表 apt-vim install -y https://github.com/scrooloose/nerdtree.git (4) 安装YouCompleteMe插件 apt-vim install -y https://github.com/Valloric/YouCompleteMe.git cd ~/.vim/bundle/YouCompleMe/ 安装各种第三方库,更新子模块;git submodule update --init --recursive (5) 对于64位系统,可以直接使用./install.py --clang-completer进行YCM插件的安装; (6)对于32位系统而言,由于直接使用./install.py --clang-completer提示Clang.so库无法正确链接( "libclang-${CLANG_VERSION}-i386-unknown-freebsd11"下载是有问题的),所以使用apt install clang-10进行相关包的下载,将/usr/lib/i386-linux-gnu/libclang-10.so替换lib/libclang.so.10文件,该lib位置放于~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp该目录,修改如下

    ![build.py](https://img-blog.csdnimg.cn/2020070414565680.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ZlbmdfODA3MQ==,size_16,color_FFFFFF,t_70 (6)最终显示如下,无报错则表示安装成功

    三、.vimrc配置(相关插件配置)

    "Vundle install set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'gmarik/Vundle.vim' Plugin 'bundle/nerdtree' Plugin 'bundle/tagbar' Plugin 'bundle/pathogen' Plugin 'bundle/YouCompleteMe' call vundle#end() "Tagbar let g:tagbar_width=35 "宽度 let g:tagbar_ctags_bin='/usr/bin/ctags' "设置tagbar使用的ctags的插件 let g:tagbar_right=1 "位置在右侧 let g:tagbar_autofocus=0 "是否自动聚焦 autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen() "打开文件自动打开tagbar nmap <F6> :TagbarToggle<CR> "快捷键 " NERD tree let NERDChristmasTree=0 let NERDTreeWinSize=35 let NERDTreeChDirMode=2 let NERDTreeIgnore=['\~$'] let NERDTreeShowBookmarks=1 let NERDTreeWinPos="left" ""修改树的显示图标 let g:NERDTreeDirArrowExpandable = '+' let g:NERDTreeDirArrowCollapsible = '-' """窗口是否显示行号 let g:NERDTreeShowLineNumbers=1 ""不显示隐藏文件 let NERDTreeShowHidden=1 " Automatically open a NERDTree if no files where specified autocmd vimenter * if !argc() | NERDTree | endif " Close vim if the only window left open is a NERDTree autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif " Open a NERDTree nmap <F5> :NERDTreeToggle<cr> " #####YouCompleteMe Configure let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' let g:ycm_confirm_extra_conf=0 "关闭加载.ycm_extra_conf.py提示` "YouCompleteMe "自动开启语义补全 let g:ycm_seed_identifiers_with_syntax = 1 "在注释中也开启补全 let g:ycm_complete_in_comments = 1 let g:ycm_collect_identifiers_from_comments_and_strings = 0 "字符串中也开启补全 let g:ycm_complete_in_strings = 1 let g:ycm_collect_identifiers_from_tags_files = 1 "开启基于tag的补全,可以在这之后添加需要的标签路径 let g:ycm_collect_identifiers_from_tags_files = 1 "开始补全的字符数 let g:ycm_min_num_of_chars_for_completion = 2 "补全后自动关闭预览窗口 let g:ycm_autoclose_preview_window_after_completion = 1 "禁止缓存匹配项,每次都重新生成匹配项 let g:ycm_cache_omnifunc=0 "回车即选中当前项 inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" "离开插入模式后自动关闭预览窗口 autocmd InsertLeave * if pumvisible() == 0|pclose|endif "语法关键字补全 let g:ycm_seed_identifiers_with_syntax = 1 "在实现和声明之间跳转,并分屏打开 let g:ycm_goto_buffer_command = 'horizontal-split' "nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳转到定义处 "nnoremap <Leader>g :YcmCompleter GoToDefinitionElseDeclaration<CR> nmap <F12> :YcmCompleter GoToDefinitionElseDeclaration<CR> nnoremap <Leader>j :YcmCompleter GoToInclude<CR> execute pathogen#infect() call pathogen#helptags()

    备注:若YCM比对是颜色比较亮色,导致无法代码查看,可以更换主题,colorscheme industry

    参考链接: https://blog.csdn.net/qq_37968132/article/details/79856758 https://www.cnblogs.com/jhssd/p/6803689.html

    以下是新的个人博客的地址:http://106.53.224.102:8080/wordpress-zh/feng_8071/http://106.53.224.102:8080/wordpress-zh/feng_8071/vim使用常见插件安装//

    Processed: 0.013, SQL: 9