在IPython笔记本中具有键盘快捷键非常好,它可以允许在外部编辑器(例如gvim)中编辑当前单元格的内容。也许只是将当前单元格的内容复制到一个临时文件中,在其上启动gvim,并在每次保存该文件时更新当前单元格(并在退出gvim时删除该临时文件)。另外,如果从浏览器中编辑了单元格,则可能会更新临时文件,以便gvim知道文件已更改。
我知道像vim-ipython和ipython-vimception这样的项目,但它们不符合我的需求。我认为浏览器足以应付简单的事情,但是当需要更强大的编辑功能时,则无需重新发明轮子。
您知道IPython笔记本中是否已经存在这样的功能吗?
谢谢。
最佳答案
这就是我想出的。我添加了2个快捷方式:
因此,当您要使用首选的编辑器编辑单元格时,请单击“g”,对单元格进行所需的更改,将文件保存在编辑器中(然后退出),然后单击“u”。
只需执行此单元格即可启用以下功能:
%%javascript
IPython.keyboard_manager.command_shortcuts.add_shortcut('g', {
handler : function (event) {
var input = IPython.notebook.get_selected_cell().get_text();
var cmd = "f = open('.toto.py', 'w');f.close()";
if (input != "") {
cmd = '%%writefile .toto.py\n' + input;
}
IPython.notebook.kernel.execute(cmd);
cmd = "import os;os.system('gvim .toto.py')";
IPython.notebook.kernel.execute(cmd);
return false;
}}
);
IPython.keyboard_manager.command_shortcuts.add_shortcut('u', {
handler : function (event) {
function handle_output(msg) {
var ret = msg.content.text;
IPython.notebook.get_selected_cell().set_text(ret);
}
var callback = {'output': handle_output};
var cmd = "f = open('.toto.py', 'r');print(f.read())";
IPython.notebook.kernel.execute(cmd, {iopub: callback}, {silent: false});
return false;
}}
);
关于vim - 在外部编辑器中编辑IPython单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28309430/