如何组合使用 VIM 编辑器与 IPYthon

译者:李鑫

原文: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页面

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容