编译vim-8.2并配置jedi-vim插件
目录
一、背景
二、编译vim-8.2
三、配置jedi-vim插件
3.1、安装插件vundle
3.2、用vundle安装jedi-vim插件
一、背景
CentOS 7.9上已经安装了anaconda,python3.7的虚拟环境webenv。现在编译安装vim-8.2,使之支持python3(yum装包是不支持python3的)。然后配置jedi-vim插件实现python代码提示和自动补全。
二、编译vim-8.2
安装依赖,编译vim-8.2依赖项
yum install git lua lua-devel ruby ruby-devel perl perl-devel perl-ExtUtils-* ncurses ncurses-devel ncurses-libs
安装依赖,jedi-vim插件依赖项,进入conda虚拟环境webenv,并安装jedi。之后就一直保持在conda虚拟环境里面,这样就好找到python3相关内容。
conda activate webenv
conda install jedi
卸载已有vim包,卸载干净。
rpm -qa | grep vim
rpm -e --nodeps vim-enhanced vim-minimal vim-filesystem vim-common
下载到vim-8.2源码包,并上传到 /data 目录,解压缩后默认是 vim82 目录。
tar xvjf vim-8.2.tar.bz2
cd vim82
编译vim-8.2,并安装。注意 --enable-python3interp=yes 选项,必须启用python3,因为jedi-vim就是使用python3的,必须的!
./configure \
--with-features=huge \
--enable-multibyte \
--enable-luainterp=yes \
--enable-rubyinterp=yes \
--enable-perlinterp=yes \
--enable-python3interp=yes \
--enable-cscope \
--enable-gui=gtk2 make -j2
make install
验证vim,注意 +python3 表示支持python3,系统级vimrc文件在"$VIM/vimrc",也就是 /usr/local/share/vim/vimrc 文件。
vim --version
......
-python
+python3
......
system vimrc file: "$VIM/vimrc"user vimrc file: "$HOME/.vimrc"
......
fall-back for $VIM: "/usr/local/share/vim"
......
刚安装完没有vimrc文件,需要配置一下,从模板里复制一份即可。
cd /usr/local/share/vim/vim82/
cp vimrc_example.vim ../vimrc
设置默认的编辑器为vim。否则,后面使用 git 等命令会找 vi (vim-minimal包里的),但那时候只有vim没有vi。
vim ~/.bashrcEDITOR=/usr/local/bin/vim
export EDITOR
三、配置jedi-vim插件
3.1、安装插件vundle
由于网络技术原因(你懂得),git clone vundle的源码一般不成功。所以,先下载vundle源码包zip压缩包,再放到指定位置 ~/.vim/bundle/Vundle.vim。
mkdir -p ~/.vim/bundle
cd ~/.vim/
unzip Vundle.vim-master.zip
mv Vundle.vim-master bundle/Vundle.vim
3.2、用vundle安装jedi-vim插件
由于网络技术原因(你懂得),git clone jedi-vim的源码一般不成功。所以,先下载jedi-vim源码包zip压缩包,再放到指定位置 ~/.vim/jedi-vim/。
cd ~/.vim
unzip jedi-vim-master.zip
mv jedi-vim-master jedi-vim
因为网络技术原因(你懂得),所以从本地git仓库安装jedi-vim,我们建立本地的jedi-vim仓库。
cd ~/.vim/jedi-vim/
git init
git add ./*
git commit
编辑 ~/.vimrc文件,告诉vim我要从哪里安装 jedi-vim 插件。
vim ~/.vimrc
set nocompatible "去除VIM一致性,必须filetype off "必须set rtp+=~/.vim/bundle/Vundle.vim "设置包括vundle和初始化相关的运行时路径call vundle#begin() "在此增加其他插件,安装的插件需要放在vundle#begin和vundle#end之间"安装github上的插件格式为 Plugin '用户名/插件仓库名'
Plugin 'file:///root/.vim/jedi-vim' "本地的Git仓库格式为 Plugin 'file:///+本地插件仓库绝对路径'call vundle#end()filetype plugin indent on "加载vim自带和插件相应的语法和文件类型相关脚本,必须let g:jedi#completions_command = "<C-N>" "设置 <Ctrl-n>(同时按下Ctrl和n键) 组合键用于触发jedi-vim的自动补齐功能set ai
set ts=2 "ts=tabspace
set sw=2 "sw=shiftwidth
set et "et=expandtab
autocmd FileType yaml setlocal ai ts=2 sw=2 et
autocmd FileType python setlocal ai ts=4 sw=4 et
在Vim的命令行模式下执行 :PluginInstall 即可完成安装。看看效果。
如果在其他虚拟环境中也能提示并自动补全,只需要在该环境里安装jedi。
conda install jedi
相关文章:

group by总结(还有having)
先在MySQL数据库里创建一个表,并添加几条数据用于测试: create table fruit(name varchar(4),address varchar(12),type_name varchar(6) )insert into fruit values (香蕉,广西,大香蕉); insert into fruit values (苹果,山东,红富士); insert into fr…

PHP数组基本的操作方法
1、数组操作的基本函数 数组的键和值: array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如果有重复前面的会被后面的覆盖) in_array("apple",$arr);在数组中…

linux kafka进程挂了 自动重启
使用crontab,定时监控 kafka进程,发现挂了后重启。 shell脚本如下: #!/bin/sh source /etc/profile proc_dir"/data/kafka" # 程序目录 proc_name"kafka.Kafka" …

Towards Real-time Semantic RGB-D SLAM in Dynamic Environments(动态语义SLAM)
动态环境下的实时语义SLAM简介摘要系统流程实验结果总结简介 在ICRA 2021上看到这样一篇论文:Towards Real-time Semantic RGB-D SLAM in Dynamic Environments,发现它也是使用的语义网络基于深度图的多视图几何方法来去除图片中的动态对象的。这一方法和…

gpupdate /force 遇报错解决过程
windows server 2008 修改策略后,需要更新。在cmd中执行 gpupdate /force,遇到报错。报错内容为 The processing of Group Policy failed. Windows attempted to read the file \\<domain.name>\SysVol\<domain.name>\Policies\{xxxxxxxx-xx…

pytorch学习——torch.cat和torch.stack的区别
合并tensors torch.cat 沿着特定维数连接一系列张量。torch.stack 沿新维度连接一系列张量。 torch.cat 在给定维度中连接给定的 seq 个张量序列。 所有张量必须具有相同的形状(连接维度除外)或为空。 torch.cat(tensors, dim0, *, outNone) → Tens…

Docker将容器制作成镜像并提交到远程仓库
Docker将容器制作成镜像并提交到远程仓库 步骤如下 先在dockerhub上创建一个自己的用户https://hub.docker.com/。或者在阿里云也可以。 2. 然后先创建一个空的镜像名。 3. 在终端上登录。 4. 这里有一个容器ID为fe08a32503b1。想把它制作成镜像以备后期自己用。 5. 将容器制作…

关于子业之间相互取得元素或者方法
1.跳转是将页面name带过去 例子: url:"login.jsp?windowName"window.name; 传递参数到子页面 ,使得子页面能够通过名字返回数据 2.获取跳转到页面 window.top.frames[0].frames["${param.windowName}"].document转载于:…

windows 2008 (非R2)使用批处理文件调整组策略过程记录
2021年12月8日,对windows server 2008 (不是 windows server 2008 R2) 调整组策略。其中有一部分,无法通过图形界面(gpedit.msc)进行,只能在cmd用命令行执行。执行时遇到如下报错。 猜想是由于中…

【Leetcode】 刷题之路1(python)
leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类。 1.两数之和15.三数之和16.最接近的三数之和11.盛最多的水18.四数之和454.四数相加II 1. 两数之和给定一个整数数组 nums 和一个整数目标值 target,请你…

MySQL数据库中的内置函数
SQL函数分为单行函数和多行函数: 单行函数: 红色标注的为重点。 … … … …字符串函数: … … … … … … … … … … 1.length() 存储长度 … … … … … … … … … … 2.char_length() 字符个数 … … … … … … … … … … 3.concat()首尾相连 … ……

elasticsearch从入门到出门-01windows上安装使用
elasticsearch 1、安装JDK,至少1.8.0_73以上版本,java -version2、下载和解压缩Elasticsearch安装包,目录结构3、启动Elasticsearch:bin\elasticsearch.bat,es本身特点之一就是开箱即用,如果是中小型应…

读django文档——Managing static files (e.g. images, JavaScript, CSS)
在上一篇读django文档——nginx uwsgi 部署django项目_苦行僧的妖孽日常-CSDN博客 部署django项目后,发现在runserver时都能正常部署的 static 文件都没有生效。查看文档解决该问题,记录这一过程。 If you use django.contrib.staticfiles as explaine…

pytorch中tensor.mul()和mm()和matmul()
tensor.mul tensor.mul和tensor * tensor 都是将矩阵的对应位置的元素相乘,因此要求维度相同,点乘torch.mul(input, other, *, outNone) → Tensor 参数: input (Tensor) – the input tensor. other (Tensor or Number) torch.mul(input, …

python学习笔记 day44 数据库三范式
参考自 https://www.cnblogs.com/wangfengming/articles/7929118.html 1. 数据库三范式概念: 为了建立减少冗余,结构合理的数据库,涉及数据库时必须要遵守一定的规则,在关系数据库中,这种规则就成为范式,范…

行内标签(最常用的:a标签、img标签、span标签)
a 标签: 功能: 从一个页面跳转到其他页面,或者是当前页面的其他位置。 属性: href :指定跳转的目标路径。 值可以是一个外部网站的地址;也可以是一个内部网页的地址 target: _self 默认值,在当…

SAP HR模块配置假期日历和缺勤类型
目录 一、配置假期日历 二、配置缺勤信息类型 2.1、定义缺勤类型 2.2、定义缺勤的计算规则 2.3、分配缺勤计算规则到缺勤类型 一、配置假期日历 SAP的HR模块中,业务顾问在实施的时候一般会配置未来10年的假期日历,到期后再进行配置。 延长假期日…

表格(table、tr、th、td、colspan、rowspan)
表格一: <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title></title><style>table{width: 720px;/*设置表格水平宽度为720px*/margin: 0 auto;/*使表格水平居中*/border: 1px solid black;/*设置边框…

Java基础概念性的知识总结
属于个人的所学的知识总结,不是全面的 1.JDK、JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心。包括了Java的运行环境、JRE、一堆Java工具和Java基础的类库。 02.JRE:(Java Runtime Envir…

vue里的数据
背景: 一个项目完工在即,鉴于此,前端使用了vue,写下此栏,以供日后翻阅, 会涉及到我所运用到的vue相关知识,需要一定的js基础。 默认vue的single-file-components(单文件组件开发&…

【Leetcode】刷题之路2(python)
哈希映射类题目(简单题小试牛刀啦bhn) 242.有效的字母异位词349.两个数组的交集1002.查找常用字符202.快乐数383.赎金信 242. 有效的字母异位词 用python的Counter类太绝了!!! 一行代码解决问题,这道题实…

ORA-01113 file 1 needs media recovery
启动数据库时报错。ORA-01113 datafile1需要恢复。 rman执行恢复。恢复后尝试打开数据库,看结果 rman target / recover datafile 1; alter database open; 反复上述过程,直到所有数据文件恢复。 recover datafile 1; …… recover datafile 13; 如果…

大数据批量导入,解决办法,实践从定时从 sqlserver 批量同步数据到 mySql
c#代码,批量导入数据代码 public class MySql_Target : ZFCommon.DataAccesser.Base.DABase{public MySql_Target(){this.InitDataAccesser(ZFCommon.DataAccesser.DatabaseType.MySql, ReadConfig.TargetConnection);}///大批量数据插入,返回成功插入行数 /// <…

【目标检测】yolo系列:从yolov1到yolov5之YOLOv5训练自己数据集(v6.0)
一、源码下载及requirments 源码下载地址:https://github.com/ultralytics/yolov5 (持续更新中) 本人所用环境如下: pytorch:1.8(因为cuda版本用了pytorch1.8) cuda:10.1 Python&am…

CSS之常用选择器(元素、id、类、通配选择器)
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>/*1、元素选择器作用:根据标签名来选中指定的元素语法:标签名{}例子:p{} h1{} div{}*//*p{color: red;}*/…

Java中 实体类 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
PO(persistant object) 持久对象 在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中…

SAP有用的NOTE(持续更新)
目录 2421240 - Portal is not loaded on Chrome 56 or higher. 66971 - Supported SAP GUI platforms 66971 - Supported SAP GUI platforms 1999880 - FAQ: SAP HANA System Replication 2250144 - FAQ: SAP HANA Secure User Store 2222200 - FAQ: SAP HANA Network …

【目标检测】yolo系列:从yolov1到yolov5之YOLOv1详解及复现
检测器通常能够被分为两类,一类是two-stage检测器,最具代表的为faster R-CNN;另一类是one-stage检测器,包括YOLO,SSD等。一般来说,two-stage检测器具有高定位和识别准确性,而one-stage则有速度上…

Ubuntu终端命令行缩短显示路径
平时我们使用linux终端命令行的时候,常常会被一个问题困扰,那就是文件路径过长, 有时候甚至超过了一行,这样看起来非常别扭,其实只要两步就可以解决这个问题: 1,修改.bashrc文件(用户…

主要的约瑟夫环问题
解说 http://poj.org/problem?id3517 n个人,编号为1~n。每次从1開始数,数到m的人出圈。最后一个出圈的人的编号。f[1] 0; for(int i 2; i < n; i) {f[i] ( f[i-1] m)%i; } printf("%d\n",f[n]1);这里第一次出圈的人的编号是mÿ…