V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
skywind3000
V2EX  ›  Vim

AsyncRun 新增:在内置终端内执行命令,调试程序更加方便

  •  2
     
  •   skywind3000 · 2020-02-10 03:17:37 +08:00 · 2725 次点击
    这是一个创建于 1744 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最新版 AsyncRun 除了在 quickfix 窗口里运行程序外,还增加了对内置终端的支持,有几个目的:

    • 让你调试程序更方便,特别是你的程序需要交互时(读取用户输入),原来的 quickfix 窗口就不够用了。
    • 直接用原有的 :term xxx 很难用,Vim/NeoVim 体验不一致,目录无法指定,窗口不能复用,很多细节要注意。
    • 不需要每次都到另外一个 tmux 窗口下去跑你的程序。

    :AsyncRun 命令后面追加:-mode=terminal-mode=term 参数来在内置终端内运行命令:

    :AsyncRun -mode=term [-pos=?] [-rows=N] [-cols=N] [-focus=0] {cmd}
    

    上面命令运行后,AsyncRun 将会打开一个终端窗口来运行你的命令:

    参数 -pos=? 可以指定终端的打开位置,可以设置为:tab, curwin, left, right, top 以及 bottom 的其中之一,你还可以指定 -rows=?-cols=? 来确定内置终端的大小。

    如果当前 tab 内已经有一个运行结束的终端窗口,那么将会复用它,其他 AsyncRun 的参数,比如 -cwd=? 设定运行目录,-save=? 设定是否保存文件等参数同样有效,这样比你直接运行 :term xxx 来用内置终端运行程序方便不少。

    另外,如果当前 tab 已经有一个终端窗口了,但是里面的程序还没有结束,那么就不会被复用,AsyncRun 将会建立一个新的终端窗口。

    如果你屏幕很小,分屏终端不够爽,那么可以用一个新的 tab 打开终端:

    :AsyncRun -mode=term -pos=tab ls -la /usr
    

    运行效果:

    整个 tabpage 都能用于显示内置终端,上面所说的窗口复用仅对 split 切分有效,对 -pos=tab 无效。

    更多用法见: [AsyncRun 中文文档]

    2 条回复    2020-02-11 04:23:11 +08:00
    jdhao
        1
    jdhao  
       2020-02-10 21:04:59 +08:00
    赞,一直在用这个插件运行 Python 程序
    skywind3000
        2
    skywind3000  
    OP
       2020-02-11 04:23:11 +08:00
    @jdhao 欢迎尝试我基于 asyncrun 的新插件: https://github.com/skywind3000/asynctasks.vim
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5448 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:26 · PVG 16:26 · LAX 00:26 · JFK 03:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.