将jupyter 和 neovim 整合,你会得到一个完美的体验。
image.png当你使用 neovim 编辑器获取代码单元和交互式开发, 可以通过 linters 和代码格式化程序放置的纯文本文件。
插件配置
- jupytext.vim
- iron.nvim
- vim-textobj-hydrogen
操作原始 ipynb 文件既困难又不符合人体工程学, notedown 和 jupytext 等工具使转换成为可能 ipynb 文件来回纯文本表示形式。
要自动化流程需要使用 JupyText.vim 插件。它将打开笔记本并将其加载到 缓冲区作为 Python 脚本。保存时,它将往返回 ipynb 格式。非常方便!
iron.nvim
将nvim与IPython连接起来并不比使用iron.nvim更容易。它还 支持许多其他 REPL,因此无论您选择哪种语言,它都会对你有帮助。
vim-textobj-hydrogen
最后一个要素是让(n)vim理解代码单元格。vim-textobj-hydrogen它引入了两个文本对象,并且对应于定义的单元格 以hydrogen 形式。它还包括了两个动作,并且,以快速 跨单元格移动。
以下是您需要添加到 nvim 配置中的所有内容。唯一的部分 这可能需要一些解释是 的映射。我们从使用 IronRepl defaul映射将动议发送到REPL中,即.然后我们 接下来是 vim-textobj-hydrogen 中定义的 text 对象,以及 最后,我们运行搜索以到达下一个单元格的开头。这 双击关闭由搜索启动的突出显示。
call plug#begin('~/.vim/plugged')
Plug 'hkupty/iron.nvim'
Plug 'kana/vim-textobj-user'
Plug 'kana/vim-textobj-line'
Plug 'GCBallesteros/vim-textobj-hydrogen'
Plug 'GCBallesteros/jupytext.vim'
call plug#end()
" Jupytext
let g:jupytext_fmt = 'py'
let g:jupytext_style = 'hydrogen'
" Send cell to IronRepl and move to next cell.
" Depends on the text object defined in vim-textobj-hydrogen
" You first need to be connected to IronRepl
nmap ]x ctrih/^# %%<CR><CR>
luafile $HOME/.config/nvim/plugins.lua
local iron = require "iron.core"
iron.setup({
config = {
should_map_plug = false,
scratch_repl = true,
repl_definition = {
python = {
command = { "ipython" },
format = require("iron.fts.common").bracketed_paste,
},
},
},
keymaps = {
send_motion = "ctr",
visual_send = "ctr",
},
})
网友评论