Ответ 1
Как упоминалось выше, все сложные детали документированы в :help except-compat
, и ответ в основном сводится к обратной совместимости и присущей гибкости Vimscript.
Существует естественная прогрессия от записанных макросов до сопоставлений с пользовательскими функциями. Имея это в виду, может иметь смысл, что когда команда в функции вызывает ошибку (например, %s/foo/bar/
, которая не соответствует и не пропускает флаг e
), обработка должна продолжаться.
С другой стороны, когда вы пишете сопоставления "промышленного класса", вы почти всегда будете использовать блок try..catch
внутри иерархии вызовов функций, во всяком случае (чтобы избежать многострочных ошибок Error detected while processing function: ...
, а вместо этого показывать приятное сообщение об ошибке для пользователя).
Таким образом, на практике большинство опубликованных плагинов не используют abort
, но try..catch
, а для быстрого, вне-манжетного материала, в любом случае, вы, как правило, не слишком заботитесь об обработке ошибок.