2011-08-29 143 views
2

在vim中我有这样的nmapVIM:<silent> NMAP

nmap <silent> ,mu : marks ABCDEFGHIJKLMNOPQRSTUVWXYZ<CR> 

如果我不上有标志,并尝试,mu我得到

E283: No marks matching "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 

为什么不显示错误输出?

回答

4

尝试

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

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

编辑(sehe)

为了让事情变得更具有可读性,我建议使用这样的片段在你$MYVIMRC

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

nnoremap <silent> ,mu :call ShowGlobalMarks()<CR> 
+0

甚至不知道有尝试在vimscript中捕获。谢谢! – MattClimbs