前言
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,甚至一次性将java
和javac
从指向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。
总结
尊重原创,转载请注明来自:http://www.cnblogs.com/fsjohnhuang/p/6056651.html _肥仔John
让VIM支持Python2 by update-alternatives的更多相关文章
-
Jupyter 同时支持python2, python3
从docker hub 下载了一个 tensorFlow 镜像,但是里面只支持python2.7 kernel, 不支持python3 kernel. 1. Notebook的右上角点new 只看到 ...
-
vim 支持 markdown 语法
/************************************************************************* * vim 支持 markdown 语法 * 说明 ...
-
Python核心团队计划2020年停止支持Python2,NumPy宣布停止支持计划表
Python核心团队计划在2020年停止支持Python 2.NumPy项目自2010年以来一直支持Python 2和Python 3,并且发现支持Python 2对我们有限的资源增加了负担:因此,我 ...
-
设置vim支持gbk
linux下的默认字符集是utf-8,但Windows下默认是GBK,如果我们在linux下打开Windows中的文件就很容乱码,可以通过下面的设置使vim支持GBK编码. 首先,确认你的系统中安装了 ...
-
pcap支持Python2.7.8解决办法
pcap库只支持到python2.5. pip install pcap在python2.7.8找不到. 只需要将网盘的2个文件放到python安装目录下lib/site-package文件夹即可 链 ...
-
Mac下vim7.4+vimgdb让vim支持gdb源码调试
下载vimgdb https://github.com/cpiger/vimgdb-for-vim7.4 下载vim7.4源码 将两个文件或者文件夹放到同一个目录解压 tar xjvf vim-7.4 ...
-
Sublime Text 3安装完美的Vim支持,ActualVim/NeoVim
很多IDE和编辑器都有Vim插件用于支持Vim模式,但大多数都有些问题,拿我一直用的Idea来说,它的vim在ctrl+v后,选择多行的行前插入,如果这几行中有空行,它不会把空格算在内,所以最终是会少 ...
-
Hive支持行级update、delete时遇到的问题
Hive从0.14版本开始支持事务和行级更新,但缺省是不支持的,需要一些附加的配置.要想支持行级insert.update.delete,需要配置Hive支持事务.(行级的insert好像不配置也能运 ...
-
CDH-hive支持insert、update、delete操作
开发要求hive支持update操作,搞张临时表测试下,报错如下: 配置hive-site.xml CDH进入hive配置页,选择高级,找到hive-site.xml的HIve客户端高级配置段代码段, ...
随机推荐
-
最大M子段和 V2
51nod1053 这题还是我们熟悉的M子段和,只不过N,M<=50000. 这题似乎是一个堆+链表的题目啊 开始考虑把所有正数负数锁在一起. 比如: 1 2 3 -1 –2 -3 666 缩成 ...
-
在ios下提示“@synthesize of ‘weak’ property is only allowed in ARC or GC mode”
现在的项目是手动内存管理,所以在引入第三方资源库时候,很多资源库更新以后都开始使用arc进行编码,这样就导致两种代码风格不一致,有的时候可能开发者也没有注意到这些问题,反正用的时候也没有报错,就直接使 ...
-
linux -- read(), write()
read()函数 2011-03-23 16:28:37| 分类: linux | 标签: |字号大中小 订阅 read函数从打开的设备或文件中读取数据. #include <uni ...
-
php 安装shpinx扩展
cd /home/packages wget http://sphinxsearch.com/files/sphinx-0.9.9.tar.gz tar xzvf sphinx-0.9.9.tar.g ...
-
WS之cxf的权限拦截器应用
一.服务器端: 1.权限判断: package cn.tdtk.ws.interceptor; import java.util.List; import org.apache.cxf.binding ...
-
Sum Root to Leaf Numbers——LeetCode
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...
-
Matlab lugui
function [L,U,pv,qv] = lugui(A,pivotstrat) %LUGUI Gaussian elimination demonstration. % % LUGUI(A) s ...
-
201521123073 《Java程序设计》第13周学习总结
1. 13周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jm ...
-
IPFS: NAT traversal(NAT穿越)
IPFS是一个p2p网络,那么一定绕不开的一个问题就是NAT穿越.之前的文章里面也提到过IPFS网络连通性使用的ICE NAT穿越框架,本文简单介绍一下什么是NAT. 为什么有NAT技术? NAT ...
-
决策树(ID3、C4.5、CART)
ID3决策树 ID3决策树分类的根据是样本集分类前后的信息增益. 假设我们有一个样本集,里面每个样本都有自己的分类结果. 而信息熵可以理解为:“样本集中分类结果的平均不确定性”,俗称信息的纯度. 即熵 ...