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