vim - 在外部编辑器中编辑IPython单元

标签 vim editor cell ipython-notebook

在IPython笔记本中具有键盘快捷键非常好,它可以允许在外部编辑器(例如gvim)中编辑当前单元格的内容。也许只是将当前单元格的内容复制到一个临时文件中,在其上启动gvim,并在每次保存该文件时更新当前单元格(并在退出gvim时删除该临时文件)。另外,如果从浏览器中编辑了单元格,则可能会更新临时文件,以便gvim知道文件已更改。

我知道像vim-ipython和ipython-vimception这样的项目,但它们不符合我的需求。我认为浏览器足以应付简单的事情,但是当需要更强大的编辑功能时,则无需重新发明轮子。

您知道IPython笔记本中是否已经存在这样的功能吗?

谢谢。

最佳答案

这就是我想出的。我添加了2个快捷方式:

  • 'g'以使用当前单元格的内容启动gvim(您可以使用任意喜欢的文本编辑器替换gvim)。
  • 'u'用gvim保存的内容更新当前单元格的内容。

  • 因此,当您要使用首选的编辑器编辑单元格时,请单击“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/

    相关文章:

    python - 如何配置vim在编辑python文件时不在行首添加注释

    linux - 我在哪里可以找到 vim 增强的资源?

    vim - 在 vim 中拆分和调整文件大小

    html - Vim Solarized colorscheme 无法与 html 一起正常工作

    regex - 正则表达式查找/替换的用例

    java - 如何在 Knife.fromHtml() 中留出空格、转到下一行、下划线或将字符加粗?\n、\t、\r 没有任何效果

    javascript - 使用 JavaScript 添加/删除单元格类

    c# - 通过单击 c#(winform) 更改 datagridview 单元格颜色

    java - 在 iText 元素上添加阴影效果

    vim - 如何 "rewrite"现有的 vim 键绑定(bind)?