Vim:如何确定终端选项卡中进程的状态?



Vim 中的:ls命令在 Vim 中输出当前缓冲区。如果其中一个缓冲区是终端,则有一些有用的标志可以检查。例如,如果命令是:

term echo "test"

:ls将包含以下内容作为条目之一:

...
7 %aF  "!echo "test" [finished]"      line 1
...

是否有一个 vim 函数可以返回有关缓冲区的此类扩展信息?:help terminal建议,如果modifiable选项是off,工作必须完成。

在对终端缓冲区进行更改之前,"可修改"选项必须 被设置。 这只有在作业完成时才有可能:

换个角度来说,我怎么知道 shell 进程的状态是从term命令开始的?

终端进程始终绑定到缓冲区,而不是选项卡。在 Vim 中存在一个函数term_getstatus();在尼奥维姆,它jobwait().

这是我的配置中的一个通用函数:

function! term#running(buf)
return getbufvar(a:buf, '&buftype') !=# 'terminal' ? 0 :
 has('terminal') ? term_getstatus(a:buf) =~# 'running' :
 has('nvim') ? jobwait([getbufvar(a:buf, '&channel')], 0)[0] == -1 :
 0
endfunction

最新更新