让VIM支持Python2 by update-alternatives

前言

 Ubuntu 16+中$ sudo apt install vim所安装的vim只支持Python3,但很多插件如YCM和powerline均需要Python2,那就来场“生命贵在折腾”吧!

自检

 在shell中输入以下命令,若出现-python则表示不支持Python2,+python则表示支持;-python3表示不支持Python3,+python3则表示支持。

$ vim --version | grep python

安装

1.安装

$ sudo apt install vim-nox-py2

除了vim-nox-py2,还可以选择安装vim-gtk-py2等。 2.重置vim符号链接

$ sudo update-alternatives --config vim

然后输入0按回车。现在输入$ vim,打开的就是/usr/bin/vim.nox-py2这个vim版本了!

八一八update-alternatives

 在Debian系统中(含Ubuntu)我们可能会安装很多功能相似的程序,如emacs和vim,甚至同一个程序安装多个版本,如vim-nox和vim-nox-py2。但在一般使用场景下我们仅使用固定某个或某版本的程序,那么通过update-alternatives命令来管理系统命令符号链接,我们就能轻松完成如将vim从指向vim-nox切换为指向vim-nox-py2,甚至一次性将javajavac从指向1.4切换为指向1.8,而不是到/usr/bin/中逐个符号链接修改那么蛋碎。

组成

link,符号链接绝对路径,如/usr/bin/vim; name, 位于/etc/alternative/下的文件名称,作为update-alternatives命令中使用的命令标识; path, 实际程序的执行路径, 如/usr/bin/vim.nox-py2. priority, 若处于auto mode,那么priority值高的将作为符号链接的默认目标值.  其中前三者的关系是:

$ ln -s /usr/bin/vim.nox-py2 /etc/alternative/vim 
$ ln -s /etc/alternative/vim /usr/bin/vim

命令API

1.查看命令符号链接组信息, update-alternatives --display <name> 示例:update-alternatives --display vim

可以看到现在处于manual mode,若处于auto mode,那么priority值高的将作为符号链接的目标值。 上图中/usr/bin/vim.gtk的priority值最高,因此若处于auto mode时,应该为ln -s /usr/bin/vim.gtk /etc/alternative/vim。但由于现在处理manual mode,因此可以看到这个提示:

link best version is /usr/bin/vim.gtk
link currently points to /usr/bin/vim.gtk-py2

2.选择符号链接的目标值, update-alternatives --config <name> 示例:sudo update-alternatives --config vim

3.新增替换的记录, update-alternatives --install <link> <name> <path> <priority> [--slave <link> <name> <path>] ... 示例:

$ sudo update-alternatives --install /usr/bin/java java /usr/local/jre1.6.0_20/bin/java 100 –slave /usr/bin/javac javac /usr/local/jre1.6.0_20/bin/javac

4.删除替换组的记录, update-alternatives --remove <name> <path> 示例:

$ sudo update-alternatives --remove vim /usr/bin/vim.gtk-py2

5.删除替换组的记录, update-alternatives --remove-all <name> 6.切换模式, update-alternatives --auto <name> 而当通过update-alternatives --config <name>设置默认目标后,该替换组的模式即会变为manual mode。

总结

 尊重原创,转载请注明

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python、Flask、Django

python中用requests获取API参数

2206
来自专栏java思维导图

Web 安全漏洞之 XSS 攻击

编者说:作为JS系工程师接触最多的漏洞我想就是 XSS 漏洞了,然鹅并不是所有的同学对其都有一个清晰的认识。今天我们请来了@卢士杰 同学为我们分享他眼中的 XS...

1012
来自专栏老九学堂

编码秘籍,Java程序员必看的调试技巧

调试可以帮助我们识别和解决应用程序缺陷,老九君下面介绍的调试方法基本都是通用的,有了下面的这些技巧在开发中会让我们在编程中事半功倍,避免浪费时间! 1.条件断点...

4056
来自专栏vue学习

10、less的引用及公共变量的抽离

less是什么自然不用多言,乃一个css预编译器,可以扩展css语言,添加功能如如允许变量(variables),混合(mixins),函数(functions...

1161
来自专栏Golang语言社区

52. Socket Server 自定义协议的简单实现 | 厚土Go学习笔记

在 Server 和 Client 通讯中,由于网络等原因很有可能会发生数据丢包的现象。如果数据确实,服务端接收的信息不完整,就会造成混乱。 我们就需要在 Se...

5499
来自专栏逆向技术

32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址

      32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址 一丶基址,随机基址的理解 首先,全局变量的地址,我们都知道是固定的,是在PE文件...

3707
来自专栏ml

web基础之Structs(一篇)

为什么有 struts 框架 Struct 的优点之处: 1.       struct的好处 2.       程序更加规范化 3.       程序的可...

3948
来自专栏Danny的专栏

【SSH快速进阶】——struts2调用action的三种方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

2853
来自专栏Django中文社区

分类与归档

侧边栏已经正确地显示了最新文章列表、归档、分类等信息。现在来完善归档和分类功能,当用户点击归档下的某个日期或者分类下的某个分类时,跳转到文章列表页面,显示该日期...

3669
来自专栏Linyb极客之路

Web安全漏洞之XSS攻击

XSS(Cross-Site Scripting)又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行。XSS是一种经常出现在 Web 应用程序中的计算机...

1203

扫码关注云+社区

领取腾讯云代金券