1

在 cygwin 上运行 vim 时,我想在活动缓冲区名称上自动设置窗口标题。

我写了这个:

function! SetMinttyTitle()
    silent !clear
    execute "!" . "echo -ne '\\e]0;". @% . "\\a' 2>&1 > /dev/null"
endfunction

au BufNewFile,BufEnter,BufRead * call SetMinttyTitle()

不幸的是,它没有按预期工作。我没有找到摆脱这条消息的方法

"Press ENTER or type command to continue"

如何在后台运行我的命令?

4

1 回答 1

2

通常的答案是system()改用;它不回显输出,而是返回它。但这不适用于您的情况,因为您需要将输出打印到终端。临时重置'shellredir'可能有效:

set shellredir=
call system("clear; echo -ne '\\e]0;". @% . "\\a' 2>&1 > /dev/null")
set shellredir=>

但 Vim 实际上内置了该功能,请参阅:help 'titlestring'

于 2014-09-22T10:36:24.377 回答