VIM插件安装与配置

文章目录

  • 前言
  • 插件管理工具
  • 1. vimrc通用配置
  • 5.标签列表插件(taglist)
  • 总结


前言

在某些情况下只能用vim编辑器,而没有类似vscode的图形化界面,为vim配置一系列插件即可方便的在vim下编程


插件管理工具

VundleVim


vim-plug
将插件的地址添加进去,然后打开vim输入PlugInstall即可自动安装


" vim-plug
call plug#begin('~/.vim/plugged')
"plug插件管理,全异步安装,不仅支持在线安装,更支持下载好的离线包直接安装。
"且安装完后,可以注释掉相关指令很方便的关闭对应插件。下面基本都是离线安装的例子
"Plug 'vim-scripts/vim-gutentags'
Plug 'mhinz/vim-startify'
Plug 'vim-scripts/taglist.vim'
Plug 'preservim/nerdcommenter'
Plug 'vim-airline/vim-airline'
Plug 'ludovicchabant/vim-gutentags'
Plug 'Yggdroot/LeaderF', { 'do': ':LeaderfInstallCExtension' }
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'ycm-core/YouCompleteMe'
Plug 'luochen1990/rainbow'
call plug#end()

所有的插件都会安装在~/.vim目录下

1. vimrc通用配置

~目录下将下面的内容放入.vimrc(若没有则新建一个)文件内

"通用配置
syntax on  " 开启语法高亮
colorscheme peachpuff "vim配置方案
set number  " 显示行号
set hls "搜索时高亮显示被找到的文本
set scrolloff=3 " 上下可视行数
set incsearch   " 搜索时高亮显示被找到的文本
set ignorecase smartcase "搜索时默认不区分大小写,只有搜索关键字中出现一个大字母时才区分大小写
set enc=utf-8  "编码设置
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 "编码自动识别
set mouse=n "鼠标普通模式
" set cursorline "选中行出现下划线
set autowriteall "可使切换文件时,修改的文件被自动保存
set autoread "打开文件监视。如果在编辑过程中文件发生外部改变(比如被别的编辑器编辑了),就会发出提示。
set hidden  " 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
map qq :qa!<CR> "多窗口不保存关闭
map ww :wqa!<CR> "多窗口保存关闭
"vim自动打开跳到上次的光标位置
if has("autocmd")au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
set nocompatible  "设置backspace的工作方式
set backspace=indent,eol,start " 设置backspace的工作方式
" 自动去除尾行空格和tab
" From: Vigil <vim5632@rainslide.net>
function RemoveTrailingWhitespace()if &ft != "diff"let b:curcol = col(".")let b:curline = line(".")"去掉每一尾行的空格和Tabsilent! %s/\s\+$//"去掉文件最后无内容的行尾" silent! %s/\(\s*\n\)\+\%$//call cursor(b:curline, b:curcol)endif
endfunction
" autocmd BufWritePre * call RemoveTrailingWhitespace()
" TAB会被显示成 >— 而行尾多余的空白字符显示成 -
map <silent> <C-L> :ter<CR> "在vim内终端
set listchars=tab:>-,trail:-
map <silent> <F5> :set list<CR> " 显示空格和tab
map <silent> <F6> :set list!<CR> " 取消显示空格和tab
map <silent> <F3> <leader>cq<CR> " 手动关闭QuickFix窗口
autocmd FileType qf nnoremap <silent> <CR> <CR>:cclose<CR> "打开QuickFix窗口选择后自动关闭" vim-plug
call plug#begin('~/.vim/plugged')
"plug插件管理,全异步安装,不仅支持在线安装,更支持下载好的离线包直接安装。
"且安装完后,可以注释掉相关指令很方便的关闭对应插件。下面基本都是离线安装的例子
"Plug 'vim-scripts/vim-gutentags'
Plug 'mhinz/vim-startify'
Plug 'vim-scripts/taglist.vim'
Plug 'preservim/nerdcommenter'
Plug 'vim-airline/vim-airline'
Plug 'ludovicchabant/vim-gutentags'
Plug 'Yggdroot/LeaderF', { 'do': ':LeaderfInstallCExtension' }
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'ycm-core/YouCompleteMe'
Plug 'luochen1990/rainbow'
call plug#end()"Tlist插件配置
let Tlist_Show_One_File           = 1 " 只显示当前文件的tags
"let Tlist_Auto_Open               = 1 " 打开vim自动打开Tlist
"let Tlist_GainFocus_On_ToggleOpen = 1 " 打开Tlist窗口时,光标跳到list窗口
let Tlist_Exit_OnlyWindow         = 1 " 如果Tlist窗口是最后一个窗口则退出Vim
let Tlist_Use_Left_Window         = 1 " 在左侧窗口中显示
let Tlist_File_Fold_Auto_Close    = 1 " 自动折叠
let Tlist_Auto_Update             = 1 " 自动更新
" <F4> 打开 Tlist 窗口,在左侧栏显示
map <F4> :TlistToggle<CR>"nerdcommenter插件快速注释
let g:NERDSpaceDelims            = 1      " 在注释符号后加一个空格
let g:NERDCompactSexyComs        = 1      " 紧凑排布多行注释
let g:NERDDefaultAlign           = 'left' " 逐行注释左对齐
let g:NERDAltDelims_java         = 1      " JAVA 语言使用默认的注释符号
let g:NERDCustomDelimiters       = {'c': {'left': '/*', 'right': '*/'}} " C 语言注释符号
let g:NERDCommentEmptyLines      = 1      " 允许空行注释
let g:NERDTrimTrailingWhitespace = 1      " 取消注释时删除行尾空格
let g:NERDToggleCheckAllLines    = 1      " 检查选中的行操作是否成功
" 选中注释
map <F12> <plug>NERDCommenterSexy         
" 选中取消注释
map <c-F12> <plug>NERDCommenterUncomment "airline状态栏配置
"这个是安装字体后 必须设置此项"
let g:airline_powerline_fonts = 1"打开tabline功能,方便查看Buffer和切换,省去了minibufexpl插件
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#buffer_nr_show = 1let g:airline#extensions#tabline#formatter = 'unique_tail'" " 关闭状态显示空白符号计数
let g:airline#extensions#whitespace#enabled = 0
let g:airline#extensions#whitespace#symbol = '!'
" " 设置consolas字体"前面已经设置过
" " set guifont=Consolas\ for\ Powerline\ FixedD:h11
if !exists('g:airline_symbols')let g:airline_symbols = {}
endif
"
" " unicode symbols
let g:airline_left_sep = ''
let g:airline_right_sep = ''
let g:airline_symbols.crypt = '🔒'
let g:airline_symbols.linenr = ''
let g:airline_symbols.maxlinenr = ''
let g:airline_symbols.branch = ''
let g:airline_symbols.paste = ''
let g:airline_symbols.spell = ''
let g:airline_symbols.notexists = ''
let g:airline_symbols.whitespace = 'Ξ'
"设置切换Buffer快捷键"
map <c-Left> :bp<CR>    " 切换到上一个
map <c-Right> :bn<CR>   " 切换到下一个
map <F2> :bd<CR>        " 关闭当前窗口
map 11 :b1<CR>          " 切换到编号1
map 22 :b2<CR>          " 切换到编号2
map 33 :b3<CR>          " 切换到编号3
map 44 :b4<CR>          " 切换到编号4
map 55 :b5<CR>          " 切换到编号5
map 66 :b6<CR>          " 切换到编号6
map 77 :b7<CR>          " 切换到编号7
map 88 :b8<CR>          " 切换到编号8
map 99 :b9<CR>          " 切换到编号9
map 00 :b10<CR>         " 切换到编号10" " 配置 ctags 的参数 "
map <c-]> g<c-]>  "ctags跳转不自动选择" gutentags 搜索工程目录的标志,当前文件路径向上递归直到碰到这些文件/目录名
let g:gutentags_project_root = ['.root', '.svn', '.git', '.hg', '.project']" 所生成的数据文件的名称
let g:gutentags_ctags_tagfile = '.tags'" 同时开启 ctags 和 gtags 支持:
let g:gutentags_modules = []
if executable('ctags')let g:gutentags_modules += ['ctags']
endif
if executable('gtags-cscope') && executable('gtags')let g:gutentags_modules += ['gtags_cscope']
endif" 将自动生成的 ctags/gtags 文件全部放入 ~/.cache/tags目录中,避免污染工程目录
let g:gutentags_cache_dir = expand('~/.cache/tags')" 配置 ctags 的参数,老的 Exuberant-ctags 不能有--extra=+q,注意
let g:gutentags_ctags_extra_args = ['--fields=+niazS']
let g:gutentags_ctags_extra_args += ['--c++-kinds=+px']
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']" 如果使用 universal ctags 需要增加下面一行,老的Exuberant-ctags 不能加下一行
"let g:gutentags_ctags_extra_args += ['--output-format=e-ctags']
" 禁用 gutentags 自动加载 gtags 数据库的行为
let g:gutentags_auto_add_gtags_cscope = 0"LeaderF 模糊文件查找配置
let g:Lf_ShortcutF = '<c-p>' " 文件快速搜索
" 函数,宏,变量快速搜索
noremap <c-f> :LeaderfTag<cr>
let g:Lf_StlSeparator = { 'left': '', 'right': '', 'font': '' }
let g:Lf_RootMarkers = ['.project', '.root', '.svn', '.git']
let g:Lf_WorkingDirectoryMode = 'Ac'
let g:Lf_WindowHeight = 0.30
let g:Lf_CacheDirectory = expand('~/.vim/cache')
let g:Lf_ShowRelativePath = 0
let g:Lf_HideHelp = 1
let g:Lf_StlColorscheme = 'powerline'
let g:Lf_PreviewResult = {'Function':0, 'BufTag':0}" #############################################################################
" cpp-enhanced-highlight c/c++ 语法高亮配置
let g:cpp_class_scope_highlight = 1 
let g:cpp_member_variable_highlight = 1
let g:cpp_class_decl_highlight = 1
let g:cpp_posix_standard = 1
let g:cpp_experimental_simple_template_highlight = 1  " a little slow on large files
"let g:cpp_experimental_template_highlight = 1 " fast but have corner case
let g:cpp_concepts_highlight = 1
let g:cpp_no_function_highlight = 1

5.标签列表插件(taglist)

sudo apt install universal-ctags

总结

https://vimawesome.com/

建议用vscode,经过一番折腾,发现还是vscode好用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/4128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[C++基础学习]----03-程序流程结构之循环结构详解

前言 在C程序中&#xff0c;循环结构在用于重复执行一段代码块&#xff0c;直到满足某个条件为止。循环结构有多种形式&#xff0c;包括while循环、do-while循环和for循环。 正文 01-循环结构简介 1、while循环语句&#xff1a; while循环在每次循环开始前检查条件是否为真&a…

【利兹】XJCO3910/COMP391001 Combinatorial Optimisation组合优化/运筹学 cw考试资料辅导

COMP391001| XJCO3910 (36642) 西交利兹院 Combinatorial Optimisation组合优化/运筹学 资料or辅导 需要请私聊 1.独家近年考试题 包你高分 2. cw and 官方标准答案 3. worksheets and solutions

【docker】安装openjdk

查看可用的 openjdk版本 docker hub 查看地址&#xff1a;https://hub.docker.com/_/openjdk 此图片已被正式弃用&#xff0c;建议所有用户尽快找到并使用合适的替代品。其他官方形象替代品的一些例子&#xff08;按字母顺序列出&#xff0c;没有有意或暗示的偏好&#xff09;…

机器学习:深入解析SVM的核心概念(问题与解答篇)【一、间隔与支持向量】

直接阅读原始论文可能有点难和复杂&#xff0c;所以导师直接推荐我阅读周志华的《西瓜书》&#xff01;&#xff01;然后仔细阅读其中的第六章&#xff1a;支持向量机 间隔与支持向量 问题一&#xff1a;什么叫法向量&#xff1f;为什么是叫法向量 在这个线性方程中&#xff…

UE5 C++ 项目C#编译目标 链接模块

一.Engine里用C#来配置 1.UnrealEditor.Target.cs using UnrealBuildTool; using System.Collections.Generic;public class UnrealEditorTarget : TargetRules {public UnrealEditorTarget( TargetInfo Target ) : base(Target){Type TargetType.Editor;IncludeOrderVersio…

给大一大二师生的忠告,如何在校招中脱颖而出做到降维打击

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

[超详细]Java子父类树形结构查询和删除[小白]

目录 前言 1、查询子父类通过树形结构封装起来 一、创建实体类 二、创建mapper类 三、创建service和serviceImpl类 四、创建controller类 2、删除该父类下的所有子类&#xff0c;并且删除自己 controller层 service和serviceImpl层 总结 前言 [超详细]Java子父类树形…

STM32与Proteus的串口仿真详细教程与源程序

资料下载地址&#xff1a;STM32与Proteus的串口仿真详细教程与源程序 资料内容 包含LCD1602显示&#xff0c;串口发送接收&#xff0c;完美实现。 文档内容齐全&#xff0c;包含使用说明&#xff0c;相关驱动等。 解决了STM32的Proteus串口收发问题。 注意&#xff1a;每输…

Datart 扩装下载功能之PDF和图片下载

Datart 扩装下载功能之PDF和图片下载 首先下载依赖 yum install mesa-libOSMesa-devel gnu-free-sans-fonts wqy-zenhei-fonts -y 然后下载安装chrome yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 查看chrome版本号 google…

SAP 修改SO BAPI报错在配置和销售凭证 1 间通信时内部出错(V1 854)

1.背景 在多次使用修改SO BAPI BAPI_SALESORDER_CHANGE的时候由于缓存未清空&#xff0c;可能会报错“在配置和销售凭证 &1 间通信时内部出错”&#xff08;Internal error in communication between configuration and sales doc.&1&#xff09;&#xff0c;对应的消…

基于Vue3实现的 宫格 图片摆放

一个可以支持无限宫格的 vue3实现 本来要参考微信群头像的规则实现&#xff0c;网上找到一大堆类似的需求&#xff0c;奈何XXX折磨人&#xff0c;九宫格已经不能满足ta了。 当前代码实现了………… 好多东西(可以多宫格).具体的看效果图 code <style scoped langless> .…

AI预测体彩排列3第2套算法实战化测试第5弹2024年4月27日第5次测试

今天继续进行新算法的测试&#xff0c;今天是第5次测试。好了&#xff0c;废话不多说了&#xff0c;直接上图上结果。 2024年4月27日体彩排3预测结果 6码定位方案如下&#xff1a; 百位&#xff1a;6、2、1、7、8、9 十位&#xff1a;8、9、4、3、1、0 个位&#xff1a;3、7、8…

【SpringBoot整合系列】SpringBoot整合Redis[附redis工具类源码]

目录 SpringBoot整合Redis1.下载和安装Redis2.新建工程&#xff0c;导入依赖3.添加配置4.先来几个基本的示例测试代码输出结果用redis客户端查看一下存储内容 5.封装redis工具类RedisKeyUtilRedisStringUtilRedisHashUtilRedisListUtilRedisSetUtilRedisZsetUtil备注 6.测试通用…

node.js 解析post请求 方法二

前提&#xff1a;以前面发的node.js解析post请求方法一为模板&#xff0c;具体见 http://t.csdnimg.cn/ABaIn 此文我们运用第二种方法&#xff1a;使用第三方模块formidable对post请求进行解析。 1》代码难点 *** 在Node.js中使用formidable模块来解析POST请求主要涉及到处理…

IO流基础

IO流介绍 1.什么是IO流&#xff1f; 流是一种抽象概念&#xff0c;它代表了数据的无结构化传递。按照流的方式进行输入输出&#xff0c;数据被当成无结构的字节序列或字符序列。从流中取得数据的操作称为提取操作&#xff0c;而向流中添加数据的操作称为插入操作。用来进行输入…

python的pandas库

什么是pandas Pandas是一个开源的第三方Python库&#xff0c;它从Numpy和Matplotlib的基础上构建而来&#xff0c;享有数据分析“三剑客之一”的盛名。Pandas已经成为Python数据分析的必备高级工具&#xff0c;目标是成为强大、灵活、可以支持任何编程语言的数据分析工具。 数…

JVM (Micrometer)监控SpringBoot(AWS EKS版)

问题 怎样使用JVM (Micrometer)面板&#xff0c;监控Spring&#xff1f;这里不涉及Prometheus和Grafana&#xff0c;重点介绍与Micrometer与Springboot&#xff0c;k8s怎样集成。 pom.xml 引入依赖&#xff0c;如下&#xff1a; <properties><micrometer.version&…

手写一个民用Tomcat (07)

继续我们的Tomcat &#xff0c;我们完成了 参数封装成map&#xff0c;下面我们处理&#xff0c;Cookie 和session 我们先引入两个类Session&#xff0c;和SessionFacade&#xff08;也是门面模式&#xff09; public class JxdSession implements HttpSession {private Strin…

免费简单好用的内网穿透工具(ngrok、natapp),微信回调地址配置

B站视频地址 文章目录 Natapp1、登录注册账号、下载软件2、使用2-1、购买隧道、查看token2-2、端口穿透 Ngrok1、登录注册账号、下载软件2、使用2-1、获取并设置 token2-2、使用 3、隧道 微信回调配置1、注册测试公众号2、回调代码3、回调配置 在一些特殊的场景下&#xff0c;需…

【模型渲染】前端如何让glb模型转3dtiles

发现了一个新插件&#xff0c;3D Tiles Tools&#xff0c;CesiumGS 出品&#xff0c;新鲜热乎&#xff08;当前写这篇文章的时候&#xff0c;版本是v 0.4.1&#xff09;&#xff0c;所以&#xff0c;有些功能还不够使用。这里是我当前版本发现的问题&#xff0c;例如&#xff1…