译者:李鑫
原文:HOW TO CONNECT YOUR VIM EDITOR TO IPYTHON
本文为极客学院Wiki组织翻译,转载请注明出处。
时间:2016.3.4
本文介绍如何通过 VIM (Vi 改进版)将代码发送到 IPython(又名 jupyter)。
当你安装 IPython 时,也就创建了一个 Jupyter 的符号链接,Jupyter 这就是 IPython 的新名。Jupyter 能与很多科学计算语言相兼容,因此 Jupyter 要比 IPython 这个词更合适。IPython 本身专注于交互式的 Python,并为 Jupyter 提供了一个 Python 内核。
因为方便易用的关系,在开始编写 Python 代码时,我一直使用 VIM 来对定制及安装过程进行更好的复制,同时我认为 VIM 也是一个非常杰出的 IDE。(参考此处查看定制的详细内容)
VIM(Vi 的改进版)是一种轻巧快速的文本编辑器。利用集成的快捷键和许多能与 VIM 耦合的插件,编程效率会大大提高,同时也加快了许多功能。Paul Ivanov 编写了其中一个功能 vim-ipython,实现了 IPython 和 VIM 的沟通。
安装
使用 apt-get install vim
安装是不行的,因为 vim 需要与你的 Python 分发版或使用的其他辅助语言(Ruby、Python等)相兼容。
首先,先要下载 vim 源代码,并根据你的 Python 分发版进行编译。我一直使用 python 2.7 进行科学编程,但是也可以针对其他版本的 Python(比如 2.6 或 3.x 版)编译 vim。
有一点很重要,你的 vim 必须根据你所使用的 Python 版本进行编译,这往往指的是在创建好虚拟环境 virtualenv 后选定的版本。
大多数情况下,不同的项目都需要不同的依赖条件,因此隔离环境能将可执行程序与系统层面分离开来。参看该教程,了解如何使用 virtualenv。
在虚拟环境中安装 IPython 的方法如下:
$ pip install pyside
$ pip install "ipython[all]"
这里要注意的是,一定要安装 pyside,这样才可以执行 ipython 的 qtconsole,而不是单纯的 ipython(或 jupyter)。
在虚拟环境中安装完 IPython 后,就可以开始 vim 编译了。
为了避免不同依赖条件的冲突,用下面这个方法清除之前的 vim 安装。
sudo apt-get remove vim-common vim-runtime
然后安装 vim 编译所需要的依赖条件:
sudo apt-get build-dep vim
从 Github 仓库中下载 vim 源代码:
git clone https://github.com/vim/vim.git
只针对包含你自定义参数的 vim 进行编译。如果需要更多的定制,可以在开始下列步骤之前,将 vim/src 处的 MakeFile 中的代码行取消注释。
cd vim/src
./configure --enable-pythoninterp --with-features=huge --prefix=$HOME/opt/vim
make && make install
echo 'export PATH=$HOME/opt/vim/bin:PATH' >> $HOME/.bashrc
vim-ipython 插件
安装之前,先下载 vim-ipython 插件并将它粘贴到 ~/.vim/ftplugin/python 实现自动加载。
使用 vundle 可以更方便地安装并管理 vim 的各种插件。利用这一系统,只需在 .vimrc 文件中包含 github 仓库名称即可,就可以安装其他插件了。可以参考此文档来详细了解 vundle 用法及安装。
与 vim 和 IPython 进行交互
打开终端后,需要配置虚拟环境,使 IPython 清楚之前在环境中所安装的插件。
ipython qtconsole
如果更喜欢用 IPython 记事本的话:
ipython notebook
两种初始化方式都能让 vim 运行着的 IPython 内核,并实现与之交互。第二个方法中(使用 ipython 的记事本),要注意必须打开一个已有的 ipython 记事本文件(.ipynb),或者利用右上角的 new 图标开启一个新文件。
如果使用 ipython 的qtconsole,会在终端外显示一个单独的窗口。
第二步就是从终端第二个 tab 处,用 vim 编辑器打开 .py 文件。
打开 .py 文件后,执行 vim 命令:
:IPython
这样,vim-ipython 插件就会了解已存在的 IPython 内核。
下一步就是将代码行或整段代码送到 IPython 中,始终用虚拟模式来选择它。要想执行整个文件,只需使用键即可(类似于在 IPython 中使用 %run
)。
将代码行发送给 IPython 后,ipython qtconsole 中不会有任何变化,而 vim 窗口将垂直分割开,以便显示代码的执行结果。
也可以在 ipython qtconsole 中使用对象内省和单词补全,就像在 IPython 中使用 :object?
和 object.
那样。
在 ipython notebook 中插入新变量时,vim 的分离窗口上就会显示出它,以及这样一条消息:“vim-ipython shell updated on (idle)”。
关于 vim-ipython 更多的用法和定制,可参看 vim-ipython Github 仓库。
最后,祝大家能将 vim 和 IPython 结合起来,愉快地编程!
现在配置好了 vim 和 IPython,快趁热打铁了解更多的 Jupyter Notebook 的用途吧。
作者简介
Arnaldo D'Amaral Pereira Granja Russo 是一位海洋生物学博士,在 Instituto Ambiental Boto Flipper担任研究员。教学及编程之余,他还喜欢冲浪、攀岩及滑翔伞运动。他的个人博客为www.ciclotux.org,还可访问他的Github页面。