1.1环境

OS:CentOS Linux release 7.6.1810 (Core)

python版本:Python 3.9.6

需求:配置vim使能支持python程序开发的类似IDE环境,实现代码不全、语法高亮等功能。

1.2检查环境

1.检查vim版本,如果没有“+python3”关键字,则需要升级vim

# 可见vim版本为7.4
[root@drp-monitor-20210426165633-mojh ~]# vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Dec 15 2020 16:44:08)
Included patches: 1-207, 209-629
Modified by <bugzilla@redhat.com>
Compiled by <bugzilla@redhat.com>
……
+cryptv          +linebreak       +python/dyn      +viminfo
+cscope          +lispindent      -python3         +vreplace
……[root@drp-monitor-20210426165633-mojh ~]# rpm -qa | grep vim
vim-filesystem-7.4.160-5.el7.x86_64
vim-minimal-7.4.160-5.el7.x86_64
vim-enhanced-7.4.629-8.el7_9.x86_64
vim-common-7.4.629-8.el7_9.x86_64

1.3升级vim版本

cd /home/service/packages/vim
mkdir vim8.2
cd vim8.2
git clone git://github.com/vim/vim.git
cd vim/src
#make clean仅仅是清除之前编译的可执行文件及配置文件
make clean
./configure --prefix=/usr/local/vim/ --with-features=huge --enable-python3interp --enable-luainterp --enable-perlinterp --enable-multibyte --enable-cscope --with-python-config-dir=/usr/local/lib/python3.9/
make
# make distclean要清除所有生成的文件
make distclean  #如果make出错时执行,调整后再重新make。
make install#删除老vim版本,如下是RPM安装的删除方式。如果是编译安装的直接删除安装目录即可。如果是yum安装的,则可以使用yum remove来删除老版本
# rpm -e vim-enhanced-2:7.4.629-8.el7_9.x86_64
# rpm -e vim-common-2:7.4.629-8.el7_9.x86_64
# rpm -e vim-filesystem-7.4.160-5.el7.x86_64#最后在创建一个软连接
ln -s /usr/local/vim/bin/vim /usr/bin/vim# 检查vim版本
[root@drp-monitor-20210426165633-mojh bin]# vim --version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Aug 24 2021 19:05:47)
Included patches: 1-3370
Compiled by root@drp-monitor-20210426165633-mojh
Huge version without GUI.  Features included (+) or not (-):
……
+cmdline_hist      +langmap           +python/dyn        +visual
+cmdline_info      +libcall           +python3/dyn       +visualextra
……

#configure参数说明:
–with-features=huge:支持最大特性
–enable-rubyinterp:打开对 ruby 编写的插件的支持
–enable-pythoninterp:打开对 python 编写的插件的支持
–enable-python3interp:打开对 python3 编写的插件的支持
–enable-luainterp:打开对 lua 编写的插件的支持
–enable-perlinterp:打开对 perl 编写的插件的支持
–enable-multibyte:打开多字节支持,可以在 Vim 中输入中文
–enable-cscope:打开对 cscope 的支持
–with-python-config-dir=/usr/lib64/python2.7/ 指定 python 路径
–with-python-config-dir=/usr/local/lib/python3.9/ 指定 python3 路径
–prefix=/usr/local/vim:指定VIM将要安装到的路径 (自行创建)

#python3/dyn 含义如下,表示同时支持python2和python3

  1. No Python support (-python, -python3)
  2. Python 2 support only (+python or +python/dyn, -python3)
  3. Python 3 support only (-python, +python3 or +python3/dyn)
  4. Python 2 and 3 support (+python/dyn, +python3/dyn)

如何确定with-python-config-dir的值

可使用如下方法:

#如下/usr/lib64/python2.7 就是我们需要的python2路径
[root@drp-monitor-20210426165633-mojh bin]# python
Python 2.7.5 (default, Apr  2 2020, 13:16:51)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib64/python2.7/site-packages/gtk-2.0', '/usr/lib/python2.7/site-packages']#如下/usr/local/lib/python3.9 就是我们需要的python3路径
[root@drp-monitor-20210426165633-mojh bin]# python
Python 3.9.6 (default, Jul 21 2021, 17:15:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/lib/python39.zip', '/usr/local/lib/python3.9', '/usr/local/lib/python3.9/lib-dynload', '/root/.local/lib/python3.9/site-packages', '/usr/local/lib/python3.9/site-packages']

1.4vim插件管理(使用Vundle插件管理器)

Vundle是Vim bundle的缩写,是一个Vim插件管理器。git hub地址为:https://github.com/VundleVim/Vundle.vim

1).配置vundle

# mkdir /usr/local/vim/share/vim/bundlecd /usr/local/vim/share/vim/bundle
# 下载vundle插件管理器到/usr/local/vim/share/vim/bundle/vundle.vim目录下git clone git://github.com/VundleVim/Vundle.vim.git /usr/local/vim/share/vim/bundle/vundle.vim
# 拷贝一份vimrc样本配置文件cp /usr/local/vim/share/vim/vim82/vimrc_example.vim /usr/local/vim/share/vim/vimrcvim /usr/local/vim/share/vim/vimrc
#加入如下内容:
"去除VI一致性,必须
set nocompatible
"必须
filetype off                  "设置Vundle的运行路径
set rtp+=/usr/local/vim/share/vim/bundle/vundle.vim
"设置插件的安装路径,vundle插件起始标志,
"#begin …… #end 之间就是要安装的插件,插件文件放在rtp+对应路径下面
call vundle#begin('/usr/local/vim/share/vim/bundle')"让vundle管理插件版本
Plugin 'VundleVim/Vundle.vim'"你的所有插件需要在下面这行之前
call vundle#end()
"加载vim自带和插件相应的语法和文件类型相关脚本
filetype plugin indent on

2).vundle安装插件

# 1)vim命令进入vim程序
# vim# 2)命令模式下执行:PluginList列出你所有的插件
:PluginList# 3) 命令模式下执行:PluginInstall安装插件
:PluginInstall

3).vundle删除插件(可选)

#删除插件只需要在vimrc配置文件中注释掉对应的插件,在vim中用:PluginClean命令就会清理掉注释掉的插件注意:
删除插件从磁盘删除对应的插件相关文件

1.5vim版python IDE推荐插件

1) nerdtree插件安装

功能:erdtree是一个在vim中新窗口显示的文件浏览器

cd /usr/local/vim/share/vim/bundle
git clone git://github.com/preservim/nerdtree.git
vim ../vimrc
#编辑vimrc配置文件,在#begin……#end之间,添加如下内容:"添加nerdtree插件
Plugin 'preservim/nerdtree'
"设置按F2启动NerdTree
map <F2> :NERDTreeToggle<CR>
"隐藏目录树中的.pyc文件
let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree在PluginList,PluginInstall来安装该插件

2) YouCompleteMe插件

功能

代码自动补全插件,支持多种语言(如java、python、C等),github详细介绍

安装

cd /usr/local/vim/share/vim/bundle
git clone git://github.com/ycm-core/YouCompleteMe.git
cd /usr/local/vim/share/vim/bundle/YouCompleteMe
git submodule update --init --recursive  #可能报错见“报错1”
python install.py --clang-completer     #可能报错见“报错2”

遇到的问题

#Q1: 报错1--git submodule报错
[root@drp-monitor-20210426165633-mojh YouCompleteMe]# git submodule update --init --recursive
Cloning into 'third_party/bottle'...
fatal: unable to access 'https://github.com/defnull/bottle/': Failed connect to 127.0.0.1:1080; Connection refused
Clone of 'https://github.com/defnull/bottle' into submodule path 'third_party/bottle' failed
Failed to recurse into submodule path 'third_party/ycmd'
#A1: 需要修改访问github的协议
1) 需要将报错的模块对应的https:// 协议改成 git://
cd /usr/local/vim/share/vim/bundle/YouCompleteMe
如上报错中提示‘https://github.com/defnull/bottle’ 找不到,
grep -ri "https://github.com/defnull/bottle"  查看哪些文件配置了这个,如下:
sed -i s#https://#git://# third_party/ycmd/.gitmodules
sed -i s#https://#git://# .git/modules/third_party/ycmd/config
注意:非github地址,可以可能需要保持使用https://协议#补充:
查看git配置:
git config --global -l
配置代理:
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy http://127.0.0.1:1080
取消代理:
git config --global --unset http.proxy
git config --global --unset https.proxy#Q2:报错2--正式安装YouCompleteMe插件时报错
[root@drp-monitor-20210426165633-mojh YouCompleteMe]# python install.py --clang-completer
File /usr/local/vim/share/vim/bundle/YouCompleteMe/third_party/ycmd/build.py does not exist; you probably forgot to run:git submodule update --init --recursive#A2:
修改.gitmodules 将“https://"  改成 ”git://"    # 因为可能https协议可能无法访问。
git submodule sync
git submodule update --init --recursive#Q3:报错3--缺少动态链接库
#A3:下载python源码包,重新编译,并复制到指定目录
1)下载(www.python.org)
2)./configure --prefix=/usr/local --enable-shared CFLAGS=-fPIC
3)make
4)makeinstall
5)复制到指定目录
cp libpython3.6m.so.1.0 /usr/local/lib64/
cp libpython3.6m.so.1.0 /usr/lib/
cp libpython3.6m.so.1.0 /usr/lib64/#Q4:报错4:缺少devtoolset-8
-- NOTE: You appear to be on CentOS. In order to use this application, you require a more modern compiler than the default compiler on this platform. Please install the devtoolset-8 or greater. For example, see this link: https://www.softwarecollections.org/en/scls/rhscl/devtoolset-8/
CMake Error at CMakeLists.txt:232 (message):Your C++ compiler does NOT fully support C++17.
-- Configuring incomplete, errors occurred!
See also "/tmp/ycm_build_s84e_jbz/CMakeFiles/CMakeOutput.log".
ERROR: the build failed.
#A4:参考如下:
1). Install a package with repository for your system:
# On CentOS, install package centos-release-scl available in CentOS repository:
$ sudo yum install centos-release-scl
# On RHEL, enable RHSCL repository for you system:
$ sudo yum-config-manager --enable rhel-server-rhscl-7-rpms
2). Install the collection:
$ sudo yum install devtoolset-8
3). Start using software collections:
$ scl enable devtoolset-8 bash#Q5:报错5:
[root@drp-monitor-20210426165633-mojh vim]# vim
YouCompleteMe unavailable: unable to load Python.
Press ENTER or type command to continue
#A5:原因:vim8不能同时python和python3,需要关闭python2的配置开关--enable-pythoninterp
#重新编译vim
cd vim源码包
make uninstall
./configure --prefix=/usr/local/vim/ --with-features=huge  --enable-python3interp --enable-luainterp --enable-perlinterp --enable-multibyte --enable-cscope --with-python-config-dir=/usr/local/lib/python3.9
make
make install

ycmd相关命令

#查看日志
:YcmToggleLogs ycmd_49353_stderr_hfxb354_.log#重启ycmd server
:YcmRestartServer#ycmd命令自动补全
:Ycm(按tab键选择,按enter确定)

vim配置python3开发环境相关推荐

  1. 【Python】Mac下Sublime Text3配置Python3开发环境

    我采用的第二种方案 1 [Python]Mac下Sublime Text3配置Python3开发环境 https://blog.csdn.net/qq_33304418/article/details ...

  2. Vim配置Golang开发环境

    Vim配置Golang开发环境 文章目录 Vim配置Golang开发环境 准备: 开始: 参考资料 准备: Download Ubuntu Desktop | Download | UbuntuUbu ...

  3. vim配置python开发环境_Win10系统下安装编辑器之神(The God of Editor)Vim并且构建Python生态开发环境(2020年最新攻略)...

    众神殿内,依次坐着Editplus.Atom.Sublime.Vscode.JetBrains家族.Comodo等等一众编辑器界的大佬们,偌大的殿堂内几无立锥之地,然而在殿内的金漆雕龙宝座上,端坐着一 ...

  4. vim配置python开发环境_VIM插件管理及python开发环境配置

    这是在公司做的一个分享,目的是帮助新手快速的配置好python开发环境.在操作之前,建议先把你自己的vim配置文件(vimrc)和.vim文件夹先剪切到一个备份文件中. 上ppt(囧,blog地址写错 ...

  5. vim配置python开发环境_GitHub - TTWShell/legolas-vim: Vim配置,为python、go开发者打造的IDE。...

    legolas-vim 个人vim配置.支持python.go等自动提示,支持python.go的函数跳转(python支持虚拟环境). 最终效果图(函数列表的feature已移除,因为大项目会导致性 ...

  6. linux中python解释器的配置_CentOS7配置Python3开发环境

    许多小伙伴在刚接触Unix/Linux操作系统时会非常的不适应,毕竟突然的命令行操作会使习惯于Windows桌面操作的人特别难受,尤其是像笔者这样的手残党,是需要一段时间来适应的. 记得刚刚接触到Un ...

  7. Vim配置IDE开发环境

    我的vim IDE界面: 1.安装Vim和Vim基本插件 首先安装好Vim和Vim的基本插件.这些使用apt-get安装即可: lingd@ubuntu:~/arm$sudo apt-get inst ...

  8. vim-python j教程_实践Vim配置python开发环境

    这段时间一直在用Python自带的IDLE编辑器.可是这IDLE的代码缩进真的让人很受伤.当你用到if:elif:的时候.后一行的elif:不会自动对齐.这让我经常出现在调试的时候才发现代码缩进出现问 ...

  9. sublime配置python3环境_【env】Sublime配置Python3开发环境

    新建编译环境 在sublime菜单栏中Tools => Build System => New Build System...,输入一下内容并保存为 Python3.sublime-bui ...

最新文章

  1. chart.Correlation绘制相关性热图
  2. ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用
  3. openssh 7.4 java使用_openssh/openssl升级到7.4和1.0.2j 源码方式
  4. 12、Java Swing计算器界面的实现
  5. uniapp H5页面嵌入微信小程序 ios 下 video组件 播放视频 设置 border-radius overflow:hidden 不生效
  6. 交替领先的赛跑(洛谷P1568题题解,Java语言描述)
  7. 视觉SLAM十四讲学习笔记-第四讲-Sophus实践、相似变换群与李代数
  8. 录音机 在launcher中显示_「 腾讯 微信事业部 社招二面」——一个APP从启动到主页面显示经历了哪些过程?...
  9. Go设计模式之Factory
  10. mysql 记录更新时间_MySQL表内更新时,自动记录时间
  11. POJ 3984 迷宫问题 (Dijkstra)
  12. python shell清屏指令_Python Shell 怎样清屏?
  13. DXperience 7.1.1
  14. c语言求信源的信息熵,[转载]关于信息熵及信源熵率
  15. TFIDF理解和应用
  16. 机器人领域的SCI期刊和会议
  17. 常见的分布期望及其方差
  18. jQuery过年烟火炫酷背景插件音效
  19. 阿里api网关接口创建、发布、授权、调试
  20. 上线7天融资1.5亿,还有50多家VC在排队,子弹短信为何受追捧?

热门文章

  1. python dask_Python数据预处理:使用Dask和Numba并行化加速
  2. dask和numpy的计算对比
  3. android studio SDK 安装不成功
  4. 一张图分出你是用左脑还是右脑
  5. 自定义异常:取款机异常
  6. 麻衣神相 宋代古本 照片翻拍 全书87页
  7. 工程技术人员以计算机为辅助工具,计算机辅助设计与制造复习资料
  8. 贝叶斯统计与贝叶斯公式
  9. 计算机应用基础演示文稿内容,计算机应用基础(题型版)——演示文稿.doc
  10. SAN环境中WWN,WWNN,WWPN的区别