像Vim和IPython shell这样的笔记本电脑 用例

像Vim和IPython shell这样的笔记本电脑 用例,vim,jupyter-notebook,Vim,Jupyter Notebook,我想将ipython笔记本作为.py文件下载,因为我不喜欢在jupyter笔记本环境中工作。但是我想使用Vim和ipython外壳来模拟Vim中jupyter笔记本的使用/功能,特别是关于单个单元/块执行 具体来说,这就是我想要做的: 将jupyter笔记本转换为.py文件 在vim中编辑.py文件 在IPython shell中执行我正在Vim中编辑的当前单元格/块,以查看结果 返回编辑.py文件 循环2-4直到完成,可能会转换回ipynb 我当前的安装程序使用拆分窗口运行Vim。第一个窗

我想将ipython笔记本作为.py文件下载,因为我不喜欢在jupyter笔记本环境中工作。但是我想使用Vim和ipython外壳来模拟Vim中jupyter笔记本的使用/功能,特别是关于单个单元/块执行

具体来说,这就是我想要做的:

  • 将jupyter笔记本转换为.py文件
  • 在vim中编辑.py文件
  • 在IPython shell中执行我正在Vim中编辑的当前单元格/块,以查看结果
  • 返回编辑.py文件

    • 循环2-4直到完成,可能会转换回ipynb
  • 我当前的安装程序使用拆分窗口运行Vim。第一个窗口显示用于编辑的.py文件,第二个窗口运行vim终端窗口
    :term
    ,并在第一个窗口下方运行IPython外壳

    这是从ipython笔记本转换而来的.py文件的外观:

    #!/usr/bin/env python
    # coding: utf-8
    
    # In[1]:
    import numpy as np
    # In[2]:
    x = 3
    # In[3]:
    y = 4
    z = 5
    
    我想创建一个vim keybinding,它检测我当前在.py文件的vim中编辑的单元格块,高亮显示它,将它复制到剪贴板,然后将窗口切换到IPython外壳,如果可能,粘贴它,执行它,并返回到vim.py文件编辑器窗口

    我试过这个,但没用:

    nnoremap <C-y> /# In\[.*\]: <CR> j <C-v> n k "+y
    
    nnoremap/#In\[.*\]:j n k“+y
    

    注意:我不想在jupyter笔记本中使用vim键绑定。我想启用类似jupyter的行为并从vim本身中使用。

    映射中的空格太多。请记住:
    vim
    运行映射字面上讲,空格表示空格,而不是命令之间的分隔符。这对我来说很有用:

    :nnoremap <C-y> /# In\[.*\]:<CR>jVnk"+y
    

    括号用于对表达式进行分组;
    \\\124;
    用于分离或分支。

    谢谢!另外,是否可以将通过vim的:term命令运行的IPython shell粘贴到.py文件下面的窗口中,然后运行它并返回编辑器?有任何可能吗?不知道,从未使用过IPython或vim的
    :term
    ed一个终端我运行一个终端仿真器(我使用
    rxvt unicode
    )。当我需要Python命令行时,我运行纯Python,配置了大量的
    PYTHONSTARTUP
    vim
    。对于我来说,它只是一个文本编辑器,我不使用它作为IDE。明白了。另外,我注意到这对最后一个块不起作用,因为在[…]中没有在文件的末尾。有没有办法解决这个问题?如果没有的话,只需在文件的末尾添加一行就可以了。谢谢。我修改了你的宏,现在它可以工作了:
    :nnoremap/\(\[.*\]:\)\\\\\\\\(\%$\)NjVnk“+ynj:noh
    。请修改您的原始答案,以便我可以将其标记为已回答。我不确定为什么通常在vim编辑器中使用“/”进行搜索时,我只需要在管道“|”字符之前使用一个“\”,但在.vimrc中,我必须使用两个才能使宏正常工作。
    \(# In\[.*\]:\|\%$\)