运行 python 来自 vim 的交互式代码

Running python code interactively from vim

我一直在使用 vim 在 C 中进行编码,目前也在切换到 python。 我的 vimrc

中有以下行
autocmd FileType python map <buffer> <leader><ENTER> :w<CR>:exec '!python3' shellescape(@%, 1)<CR>

随着我的python文件越来越复杂,处理整个文件的时间也越来越长。我想知道是否有办法将我以前的变量保留在内存中,并且只保留 运行 额外的命令行,就像我在交互式 python 会话中所做的那样。将完整文件发送到 bash 运行 整个脚本并清除所有内存。

text = read_file('my_file.txt')
text_index = index(text)
pattern = 'asdjhlsajf'
def search:
    ...

基本上,有没有一种方法可以将这些命令逐行发送到来自 vim 的交互式 python 会话?

正如@Doktor OSwaldo、@filbranden、amd @shaahiin 所建议的那样,vim-slime 是一个不错的选择(vim-ipython-cell 有一些额外的脚本)。

我使用以下方式下载了插件:

mkdir -p ~/.vim/pack/plugins/start
cd ~/.vim/pack/plugins/start
git clone https://github.com/jpalardy/vim-slime.git

将以下内容添加到 ~/.vimrc:

let g:slime_target = "tmux"
let g:slime_python_ipython = 1
filetype plugin on

然后用了两个tmux windows。一个用于 vim,另一个用于 iPython。使用

cntrl-c + cntrl-c

可以将命令发送到 iPython 会话。