【问题标题】:Running python code interactively from vim从 vim 交互式运行 python 代码
【发布时间】:2020-11-20 04:13:05
【问题描述】:

我一直在使用 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 会话?

【问题讨论】:

  • 好吧,我不是蟒蛇,所以请谨慎对待我的评论。但我认为你需要有一些持续运行的 python shell 实例。似乎有一些插件正在使用 ipython 执行此操作:github.com/hanschen/vim-ipython-cell
  • 如果你对使用插件没问题,像 vim-slime 这样将你的数据传递到 python REPL 的东西可以工作。 @DoktorOSwaldo 提到的插件看起来也不错
  • 看看vim-slime。您可以运行交互式 Python 解释器(ipython 甚至更好)并使用 slime 将来自 Vim 的 sn-ps 发送到其中。

标签: vim interactive


【解决方案1】:

正如@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 窗口。一个用于 vim,另一个用于 iPython。使用

cntrl-c + cntrl-c

命令可以发送到 iPython 会话。

【讨论】:

    猜你喜欢
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多