使用vim+tmux时,如何不退出Python环境重新执行脚本?
我之前也碰到过一模一样的糟心事!每次改完代码切终端、退Python、重跑,不仅手忙脚乱,之前测过的命令全丢,太影响效率了。折腾了好几种方法,下面这几个亲测好用,分享给你:
方案1:用ipython替代默认Python+%run魔法命令
- 先把默认的Python交互环境换成
ipython——它天生自带历史记录持久化功能,就算你关了终端再重启,之前输入的命令都能找回来。 - 当你在Vim里改完代码保存后,不用退出ipython会话!直接在ipython里输入
%run script.py,它会重新执行你的脚本,而且之前定义的变量、测试过的命令全都保留着。 - 嫌每次敲
%run script.py麻烦?按↑键就能调出上次的命令,直接回车就行,或者在ipython里配置个快捷键,比如把%run script.py绑定成\r之类的,更省心。
方案2:在Vim里直接把代码发送到终端会话
- 装个
vim-slime插件,它能帮你把Vim里的代码或者命令直接发送到tmux的终端面板里,完全不用手动切换窗口。 - 配置好后,你可以:
- 输入
:%SlimeSend把整个脚本发送到正在运行的ipython会话里重新执行 - 选中部分代码,按快捷键发送过去单独测试
- 输入
- 不想装插件的话,也可以用Vim内置的
jobstart和jobsend功能,后台启动ipython会话后直接发送命令,不过配置稍微繁琐一点,新手还是插件更友好。
方案3:优化tmux切换+保留后台会话
- 给tmux配置快速切换面板的快捷键,比如把
Ctrl+a + <和Ctrl+a + >绑定成左右面板切换,或者用数字键直接切换面板,比默认快捷键快一倍。 - 关键是别每次退出ipython!就让它在tmux的终端面板里后台挂着,改完代码切过去直接重跑,历史记录一直都在——ipython默认会把历史存在
~/.ipython/profile_default/history.sqlite里,就算重启电脑都能找回之前的命令。
我现在日常用方案1+方案3的组合,改完代码保存后按个快捷键切到终端,↑回车就重新跑脚本,测试过的变量和命令全在,效率提升太多了!
内容的提问来源于stack exchange,提问作者Wet Feet
相关产品推荐
相关产品推荐

