使Vim映射安静

das*_*ang 2 vim

我有一个映射,用于在一行上打印突出显示.我从其他海报中得到了这个想法,谢谢你.这是我做的:

function! PrintSyntaxItem()
    let l:colorsyntax = synIDattr(synID(line("."), col("."), 0), "name")
    execute "highlight" l:colorsyntax
endfunction
Run Code Online (Sandbox Code Playgroud)

我像这样映射:

nnoremap <A-s> :call PrintSyntaxItem()<CR>
Run Code Online (Sandbox Code Playgroud)

然而,当我执行它时,我得到命令行回显以及我想要的输出,这导致获得"按ENTER"提示.即在输出中我看到:

:execute "highlight" synIDattr(synID(line("."), col("."), 0), "name")
vimBracket     xxx links to Delimiter
Press ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)

我想丢失:execute线路,然后按ENTER线也会消失.有没有办法做到这一点?如果我放在silent前面execute我仍然打印出那条线但输掉了highlight输出(以及按ENTER键提示),但是为了得到我想要的输出我只是在它前面加上unsilent我得到它但是......

基本上我想要抑制:execute线的回声或者在事后清除它但是我不知道如何做,拖网文件以获取关于操纵消息的信息并没有结果.

谢谢.

rom*_*inl 5

这不是你应该沉默的命令,但正如你在问题的标题中写的那样,映射本身:

nnoremap <silent> <A-s> :call PrintSyntaxItem()<CR>
Run Code Online (Sandbox Code Playgroud)

也就是说,执行命令看起来不容易被静音.我会调查一下.

编辑

我已经尝试了所有可以找到的技巧,包括:redir =>十几种组合,[<]silent[>]但我无法获得所需的结果.要么得到提示,要么我什么也得不到.我非常抱歉!