ubuntu 16+中<code>$ sudo apt install vim</code>所安装的vim只支持python3,但很多插件如ycm和powerline均需要python2,那就来场“生命贵在折腾”吧!
在shell中输入以下命令,若出现<code>-python</code>则表示不支持python2,<code>+python</code>则表示支持;<code>-python3</code>表示不支持python3,<code>+python3</code>则表示支持。
1.安装
除了<code>vim-nox-py2</code>,还可以选择安装<code>vim-gtk-py2</code>等。
2.重置vim符号链接
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1ETMwUTM4YDNx0SNwQDN0EzM0EjMxETM2EDMy0iMwAzN0MzLcFTM2EDMy8CXyADM3QzMvw1ZvxmYvwVbvNmLzd2bsJmbj5SNxAjMzV2Zh1Wavw1LcpDc0RHaiojIsJye.png)
然后输入0按回车。现在输入<code>$ vim</code>,打开的就是<code>/usr/bin/vim.nox-py2</code>这个vim版本了!
在debian系统中(含ubuntu)我们可能会安装很多功能相似的程序,如emacs和vim,甚至同一个程序安装多个版本,如vim-nox和vim-nox-py2。但在一般使用场景下我们仅使用固定某个或某版本的程序,那么通过<code>update-alternatives</code>命令来管理系统命令符号链接,我们就能轻松完成如将vim从指向vim-nox切换为指向vim-nox-py2,甚至一次性将<code>java</code>和<code>javac</code>从指向1.4切换为指向1.8,而不是到<code>/usr/bin/</code>中逐个符号链接修改那么蛋碎。
link,符号链接绝对路径,如<code>/usr/bin/vim</code>;
name, 位于<code>/etc/alternative/</code>下的文件名称,作为update-alternatives命令中使用的命令标识;
path, 实际程序的执行路径, 如<code>/usr/bin/vim.nox-py2</code>.
priority, 若处于auto mode,那么priority值高的将作为符号链接的默认目标值.
其中前三者的关系是:
1.查看命令符号链接组信息, <code>update-alternatives --display <name></code>
示例:<code>update-alternatives --display vim</code>
可以看到现在处于manual mode,若处于auto mode,那么priority值高的将作为符号链接的目标值。
上图中<code>/usr/bin/vim.gtk</code>的priority值最高,因此若处于auto mode时,应该为<code>ln -s /usr/bin/vim.gtk /etc/alternative/vim</code>。但由于现在处理manual mode,因此可以看到这个提示:
2.选择符号链接的目标值, <code>update-alternatives --config <name></code>
示例:<code>sudo update-alternatives --config vim</code>
3.新增替换的记录, <code>update-alternatives --install <link> <name> <path> <priority> [--slave <link> <name> <path>] ...</code>
示例:
4.删除替换组的记录, <code>update-alternatives --remove <name> <path></code>
5.删除替换组的记录, <code>update-alternatives --remove-all <name></code>
6.切换模式, <code>update-alternatives --auto <name></code>
而当通过<code>update-alternatives --config <name></code>设置默认目标后,该替换组的模式即会变为manual mode。