vim:<静音> nmap

Jua*_*blo 3 vim silent

在vim中我有这个nmap

nmap <silent> ,mu : marks ABCDEFGHIJKLMNOPQRSTUVWXYZ<CR>
Run Code Online (Sandbox Code Playgroud)

如果我没有较高分数并尝试,mu得到

E283: No marks matching "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Run Code Online (Sandbox Code Playgroud)

为什么不显示错误输出?

ZyX*_*ZyX 5

尝试

 nnoremap <silent> ,mu :execute "try\nmarks ABCDEFGHIJKLMNOPQRSTUVWXYZ\ncatch /\\V\\^Vim(marks):E283:/\nendtry"<CR>
Run Code Online (Sandbox Code Playgroud)

顺便说一句,有理由:nmap代替:nnoremap吗?如果没有理由,则不应该这样做,除非您想在无法预测添加另一个映射(直接映射到vimrc或通过安装插件)的结果的情况下运行。

编辑 (sehe)

为了使内容更具可读性,建议您在您的代码中使用如下代码段$MYVIMRC

function! ShowGlobalMarks()
    try
        marks ABCDEFGHIJKLMNOPQRSTUVWXYZ
    catch /E283:/
    endtry
endfu

nnoremap <silent> ,mu :call ShowGlobalMarks()<CR>
Run Code Online (Sandbox Code Playgroud)