vim升级和配置

vim升级和配置

  • 1、背景
  • 2、环境说明
  • 3、操作
    • 3.1 升级VIM
    • 3.2 配置VIM
      • 3.2.1、编辑vimrc文件
      • 3.2.2、安装插件

1、背景

日常工作跟linux系统打交道比较多,目前主要用到的是Cenots7和Ubuntu18这两个版本的linux系统,其中Centos7主要是服务器端,Ubuntu主要是个人端。vim是其中使用高频的一个文本编辑工具,本文主要介绍vim的升级和配置。升级是因为vim用的一些插件对vim7不支持,所以才有升级。配置想必就不用多说了。

2、环境说明

项目版本
CentOS Linux release7.6.1810 (Core)
vim7.4
VIM8.2

3、操作

3.1 升级VIM

1、卸载旧版本
yum remove vim* -y
2、下载vim
git clone https://github.com/vim/vim.git
3、安装依赖
[Centos]

  yum install ncurses ncurses-devel

[Ubuntu]

 sudo apt-get libncurses5-dev

4、编译安装

  ./configure --with-features=huge --enable-multibyte --enable-pythoninterp=yes --enable-python3interp=yes --with-python-config-dir=/opt/python3/lib/python3.10/config-3.10-x86_64-linux-gnu--with-python-command=python --prefix=/usr/share/vimmaka && make install

5、创建链接

ln -s /usr/share/vim/bin/vim /usr/bin/vim

6、验证

vim --version | head -n 1
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Oct 27 2021 14:15:58)

3.2 配置VIM

3.2.1、编辑vimrc文件

vim ~/.vimrc

" 插件开始的位置
call plug#begin('~/.vim/plugged')" 代码自动完成,安装完插件还需要额外配置才可以使用
Plug 'ycm-core/YouCompleteMe'" 用来提供一个导航目录的侧边栏
Plug 'scrooloose/nerdtree'" 可以使 nerdtree 的 tab 更加友好些
Plug 'jistr/vim-nerdtree-tabs'" 可以在导航目录中看到 git 版本信息
" Plug 'Xuyuanp/nerdtree-git-plugin'" 查看当前代码文件中的变量和函数列表的插件,
" 可以切换和跳转到代码中对应的变量和函数的位置
" 大纲式导航, Go 需要 https://github.com/jstemmer/gotags 支持
Plug 'preservim/tagbar'" 自动补全括号的插件,包括小括号,中括号,以及花括号
Plug 'jiangmiao/auto-pairs'" Vim状态栏插件,包括显示行号,列号,文件类型,文件名,以及Git状态
Plug 'vim-airline/vim-airline'" Shorthand notation; fetches https://github.com/junegunn/vim-easy-align
" 可以快速对齐的插件
Plug 'junegunn/vim-easy-align'" 可以在文档中显示 git 信息
Plug 'airblade/vim-gitgutter'" markdown 插件
Plug 'iamcco/mathjax-support-for-mkdp'
Plug 'iamcco/markdown-preview.vim'" 可以在 vim 中使用 tab 补全
"Plug 'vim-scripts/SuperTab'" 可以在 vim 中自动完成
"Plug 'Shougo/neocomplete.vim'" 插件结束的位置,插件全部放在此行上面
call plug#end()" F5 to run sh/python3
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()exec "w"if &filetype == 'sh':!time bash %elseif &filetype == 'python'exec "!time python3 %"elseif &filetype == 'go'exec "!time go run %"endif
endfunc

3.2.2、安装插件

1、 进入vim进入命令模式下输入

  :plugInstall

以上操作,如果网络正常可以直接安装,如果网络异常,建议根据提示的地址,去手动下载。
2、手动配置插件
将下载的插件拷贝到~/.vim/plugged目录下
3、配置vimrc
这块就是仁者见仁,智者见智的事了,毕竟需要打造一个自己使用的文本编辑器,适合自己的才是最好的。以下为结合网络上大佬提供的一个文件的基础上调整后的一个配置文件,仅供参考。

" Configuration file for vim
set modelines=0                " CVE-2007-2438" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible        " Use Vim defaults instead of 100% vi compatibility
set backspace=2                " more powerful backspacing" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup nobackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup nobackuplet skip_defaults_vim=1
let g:go_version_warning = 0colorscheme freyasyntax enable
syntax onset ai!set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab" =========="==============================================================================
" vim 内置配置
"==============================================================================" 设置 vimrc 修改保存后立刻生效,不用在重新打开
" 建议配置完成后将这个关闭
autocmd BufWritePost $MYVIMRC source $MYVIMRC" 启动时自动开启项目文件树
" autocmd VimEnter * NERDTree" 关闭兼容模式
set nocompatibleset nu " 设置行号
set cursorline "突出显示当前行
" set cursorcolumn " 突出显示当前列
set showmatch " 显示括号匹配" tab 缩进
set tabstop=4 " 设置Tab长度为4空格
set shiftwidth=4 " 设置自动缩进长度为4空格
set autoindent " 继承前一行的缩进方式,适用于多行注释" 定义快捷键的前缀,即<Leader>
let mapleader=";"" ==== 系统剪切板复制粘贴 ====
" v 模式下复制内容到系统剪切板
vmap <Leader>c "+yy
" n 模式下复制一行到系统剪切板
nmap <Leader>c "+yy
" n 模式下粘贴系统剪切板的内容
nmap <Leader>v "+p" F5 to run sh/python3
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()exec "w"if &filetype == 'sh':!time bash %elseif &filetype == 'python'exec "!time python3 %"elseif &filetype == 'go'exec "!time go run %"endif
endfunc" 开启实时搜索
set incsearch
" 搜索时大小写不敏感
set ignorecase
syntax enable
syntax on                    " 开启文件类型侦测
filetype plugin indent on    " 启用自动补全" 退出插入模式指定类型的文件自动保存
au InsertLeave *.go,*.sh,*.php write" 插件开始的位置
call plug#begin('~/.vim/plugged')" Shorthand notation; fetches https://github.com/junegunn/vim-easy-align
" 可以快速对齐的插件
Plug 'junegunn/vim-easy-align'" 用来提供一个导航目录的侧边栏
Plug 'scrooloose/nerdtree'" 可以使 nerdtree 的 tab 更加友好些
Plug 'jistr/vim-nerdtree-tabs'" 可以在导航目录中看到 git 版本信息
Plug 'Xuyuanp/nerdtree-git-plugin'" 查看当前代码文件中的变量和函数列表的插件,
" 可以切换和跳转到代码中对应的变量和函数的位置
" 大纲式导航, Go 需要 https://github.com/jstemmer/gotags 支持
Plug 'preservim/tagbar'" 自动补全括号的插件,包括小括号,中括号,以及花括号
Plug 'jiangmiao/auto-pairs'" Vim状态栏插件,包括显示行号,列号,文件类型,文件名,以及Git状态
Plug 'vim-airline/vim-airline'" 有道词典在线翻译
" Plug 'ianva/vim-youdao-translater'" 代码自动完成,安装完插件还需要额外配置才可以使用
" Plug 'Valloric/YouCompleteMe'
Plug 'ycm-core/YouCompleteMe'" 可以在文档中显示 git 信息
Plug 'airblade/vim-gitgutter'" 下面两个插件要配合使用,可以自动生成代码块
"Plug 'SirVer/ultisnips'
"Plug 'honza/vim-snippets'" 可以在 vim 中使用 tab 补全
"Plug 'vim-scripts/SuperTab'" 可以在 vim 中自动完成
"Plug 'Shougo/neocomplete.vim'" 配色方案
" colorscheme neodark
" Plug 'KeitaNakamura/neodark.vim'
" colorscheme monokai
" Plug 'crusoexia/vim-monokai'
" colorscheme github
" Plug 'acarapetis/vim-colors-github'
" colorscheme one
" Plug 'rakr/vim-one'" go 主要插件
Plug 'fatih/vim-go', { 'tag': '*' }
" go 中的代码追踪,输入 gd 就可以自动跳转
Plug 'dgryski/vim-godef'" markdown 插件
Plug 'iamcco/mathjax-support-for-mkdp'
Plug 'iamcco/markdown-preview.vim'" 插件结束的位置,插件全部放在此行上面
call plug#end()<blockquote>"********************************************************************************

效果图
在这里插入图片描述
配置文件夹中freya主题的下载

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

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

相关文章

VMware正被博通“收拾”,我们是不是可以“嚣张”一点?

引言&#xff1a;一朝躺在大佬怀&#xff0c;今生荣华伸手来。 【全球存储观察 &#xff5c; 科技热点关注】 如是所闻&#xff0c;2023年元旦前两个月&#xff0c;大家看到博通以610亿美元的高价&#xff0c;成功完成收购了闻名遐迩的虚拟化大佬VMware。日期为2023年11月22日。…

0111qt

实现闹钟&#xff0c;并播报懒虫...~ daytest.pro: QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (th…

1.11.。。。

1 有道云笔记 2 .h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> #include <QTime> #include <QTextToSpeech>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QW…

江科大STM32

参考&#xff1a; https://blog.csdn.net/weixin_54742551/article/details/132409170?spm1001.2014.3001.5502 https://blog.csdn.net/Johnor/article/details/128539267?spm1001.2014.3001.5502 SPI&#xff1a;https://blog.csdn.net/weixin_62127790/article/details/132…

【SAP-PP】生产订单导入问题--完成日期向前推了一天

问题描述&#xff1a; 在执行BAPI_PRODORD_CREATE生产订单导入的时候&#xff0c;发现填写入模板中的基本完成日期是12月31日&#xff0c;但是到具体工单时变成了12月30日 截图说明&#xff1a; 感觉很神奇&#xff0c;咋一看&#xff0c;真的是日期提前了一天&#xff0c;de…

CMake入门教程【高级篇】qmake转cmake

&#x1f608;「CSDN主页」&#xff1a;传送门 &#x1f608;「Bilibil首页」&#xff1a;传送门 &#x1f608;「动动你的小手」&#xff1a;点赞&#x1f44d;收藏⭐️评论&#x1f4dd; 文章目录 1. 概述2.qmake与cmake的差异3. qmake示例4.qmake转cmake示例5.MOC、UIC和RCC…

快速开发、打包、上架一个 uTools 插件

本文将从零开始&#xff0c;一步步完成整个开发、打包和上架流程。 打开 uTools&#xff0c;搜索 uTools 开发者工具&#xff1a; 新建项目&#xff1a; 填写插件信息&#xff1a; 直接下载一个 uTools 启动模板&#xff1a;https://gitee.com/penggeor/utools-plugin-start…

单摆波运动

1、简介 单摆波运动通常由15个单摆小球完成&#xff0c;每个小球的线长不一致&#xff0c;线长从一端至另一端依次增长。线长不一致会导致运动周期不一致&#xff0c;故而单摆波运动中的每个小球运动都不同&#xff0c;且能在规则与不规则运动间转换。单摆波运动如下所示&…

【QML COOK】- 007-Item对象、信号和槽

信号&#xff08;signal&#xff09;和槽&#xff08;slot&#xff09;是Qt的独特的设计&#xff0c;自然在QML中也被支持。 Item是QML所有类型的基类&#xff0c;Item类型不会显示在窗口上&#xff0c;但是可以支持信号和槽。本节就用Item编写一个信号和槽的实例。 1. 创建Q…

Linux-shell简单学习

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 其他…

Maven 依赖管理项目构建工具 教程

Maven依赖管理项目构建工具 此文档为 尚硅谷 B站maven视频学习文档&#xff0c;由官方文档搬运而来&#xff0c;仅用来当作学习笔记用途&#xff0c;侵删。 另&#xff1a;原maven教程短而精&#xff0c;值得推荐&#xff0c;下附教程链接。 atguigu 23年Maven教程 目录 文章目…

Leetcode 1049 最后一块石头的重量II

题意理解&#xff1a; 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。 思路转化&#xff1a;我们可…

【计算机组成-指令系统体系结构】

课程链接&#xff1a;北京大学陆俊林老师的计算机组成原理课 1. 设计自己的计算机 一个简单的计算机指令系统 运算类指令&#xff1a;ADD R&#xff0c;M&#xff1b;功能&#xff1a;将R的内容和M中的内容相加后存入R传送类指令&#xff1a;LOAD R&#xff0c;M&#xff1b;…

03.C++内存管理笔记

1、C/C内存分布 ①内存分那么多区的原因&#xff1a;不同的数据&#xff0c;有不同的存储需求&#xff0c;各区域满足了不同的需求。 ②存放&#xff1a; 临时变量等临时用的变量&#xff1a;栈区&#xff1b; 动态申请的变量&#xff1a;堆区&#xff1b; 全局变量和静态变…

人工智能:现状与未来发展

人工智能&#xff08;Artificial Intelligence, AI&#xff09;作为一门前沿科技&#xff0c;近年来取得了长足的发展&#xff0c;给我们的生活带来了巨大的改变。目前&#xff0c;人工智能已经广泛应用于各个领域&#xff0c;不论是医疗、交通、金融还是教育等&#xff0c;都能…

初识C语言·内存函数

1 memcpy的使用和模拟实现 紧接字符串函数&#xff0c;出场的是第一个内存函数memcpy。前面讲的字符串函数是专门干关于字符串的事的&#xff0c;而这个函数可以干strcpy一样的事&#xff0c;但是区别就是它碰到\0也会继续复制。 函数的头文件是string&#xff0c;返回类型是v…

如何从 Keras 中的深度学习目录加载大型数据集

一、说明 数据集读取&#xff0c;使用、在磁盘上存储和构建图像数据集有一些约定&#xff0c;以便在训练和评估深度学习模型时能够快速高效地加载。本文介绍Keras 深度学习库中的ImageDataGenerator类等工具自动加载训练、测试和验证数据集。 二、ImageDataGenerator加载数据集…

2024.1.11

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);speechnew QTextToSpeech(this);id1startTimer(1000);//设置文本到中间ui->sys_label->setAlignment(Qt:…

20240107移远的4G模块EC20在Firefly的AIO-3399J开发板的Android11下调通能上网

20240107移远的4G模块EC20在Firefly的AIO-3399J开发板的Android11下调通能上网 2024/1/7 11:17 开发板&#xff1a;Firefly的AIO-3399J【RK3399】SDK&#xff1a;rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.0.tar.bz2.ab …

Java的Netty

1.基本概念介绍 有了Netty&#xff0c;你可以实现自己的HTTP服务器&#xff0c;FTP服务器&#xff0c;UDP服务器&#xff0c;RPC服务器&#xff0c;WebSocket服务器&#xff0c;Redis的Proxy服务器&#xff0c;MySQL的Proxy服务器等等。 Netty 是一个基于 Java 的高性能网络应…