背景场景:我在调试一个 VimScript 时,有些代码没有执行。原因是 unmap 引发了一个错误,并且 VimScript 在这个错误上退出。因为在代码周围放置了一个空的 try-catch,所以问题所在并不是很明显。最终定位到问题后,我开始觉得这个默认行为可能不是很直观。
这是一些简单的代码来说明 vim 在删除不存在的映射时报告错误,实验性的。它会在最后一行失败,说“E31:没有这样的映射”。
map <F10> :echo 'hello'
unmap <F10>
unmap <F10>
不幸的是,我找不到任何关于这种行为的文档。有人能指出我在哪里可以对删除不存在的映射进行一些解释吗?这种设计背后的原因是什么?就个人而言,我认为删除不存在的映射是一种正常的陈述,并照常继续。
编辑:这个问题可能有一些误解。我不是在问如何抑制错误。我想知道为什么 vim 认为删除一个不存在的映射是一个错误。有这么严重吗?
正如答案和评论中所指出的,当它可以执行所要求的操作时引发一个错误是 unix 哲学。我完全同意它,但在 shell 中,脚本默认会继续出错,因此不应应用相同的推理。
PS:按照建议,此问题已移至vim-dev。