Vim说'missing:endif',但是我确定它在那里

切尔十布林克

考虑下面的vim代码。

function! s:foo()
    if s:bar()
        let a = 1
    endif
endfunction

function! s:bar()
python << EOF
vim.command('echoerr "blabla"')
EOF
endfunction

command! Foo call s:foo()
map <F7> :Foo<CR>

打开vim会话,然后按F7。然后Vim会抛出错误说E171: Missing :endif这怎么可能?如何在python部分内部正确发送错误消息?

英戈·卡卡特(Ingo Karkat)

在函数内部,:echoerr类似:throw并引发异常。正常的控制流被中断,Vim抱怨没有看到:endif:echoerr在函数内部实际上是没有用的,也因为显示了整个多行堆栈跟踪。

我可以通过设置v:errmsg(或任何其他自定义变量或标志)解决此问题,然后直接在函数结束时检查并报告错误:

function! s:foo()
    let v:errmsg = ''
    if s:bar()
        let a = 1
    endif
endfunction

function! s:bar()
python << EOF
vim.command('let v:errmsg = "blabla"')
EOF
endfunction

command! Foo call s:foo() | if ! empty(v:errmsg) | echoerr v:errmsg | endif
map <F7> :Foo<CR>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Vim说'missing:endif',但是我确定它在那里

来自分类Dev

Firebase 说我在 Manifest 中缺少一行,但它在那里

来自分类Dev

当地的apt-mirror说找不到发布,但是在那里,我想念的是什么

来自分类Dev

Mongo更新响应说没有文档更新,但是文档在那里

来自分类Dev

PWA:清单在那里,但是Chrome说“找不到清单”吗?

来自分类Dev

列在那里,但是当我尝试删除它时,它说MYSQL中没有列?**错误代码:1091。无法删除... **

来自分类Dev

列在那里,但是当我尝试删除它时,它说MYSQL中没有列?**错误代码:1091。无法删除... **

来自分类Dev

Django找不到我的基本模板,但是它在那里

来自分类Dev

Devise无法检测到:omniauthable,但是它在那里

来自分类Dev

img不可见..但是它在那里

来自分类Dev

秘密密钥在那里,尽管它说在Django中没有秘密密钥

来自分类Dev

“没有这样的文件或目录”,但是它在那里。

来自分类Dev

apt-get表示未找到Version,但是它在那里

来自分类Dev

apt-get表示未找到Version,但是它在那里

来自分类Dev

为什么我会收到“ -bash:'alias:命令未找到”,但它在那里..?

来自分类Dev

我收到FileNotFoundException但文件在那里

来自分类Dev

即使在两周后仍无法在Google Play商店中找到应用,但是它在那里

来自分类Dev

类包不包含src.main.java,但是它在那里并且eclipse抱怨它

来自分类Dev

缺少所需的请求正文,但它在那里

来自分类Dev

“类”不包含“方法”的定义,但它在那里

来自分类Dev

我收到未定义索引的通知,但是索引在那里

来自分类Dev

为什么vim有时显示^ M而有时不显示(即使它们在那里)?

来自分类Dev

为什么vim有时显示^ M,有时却不显示(即使它们在那里)?

来自分类Dev

为什么我断言元素包含某个字符串失败,即使它在那里?

来自分类Dev

form_for helper 给了我一个错误,尽管它在那里缺少一个参数

来自分类Dev

编译器说方法是不确定的...但是(我认为)

来自分类Dev

为什么Rails 4会说缺少帮助文件,尽管它在那里?

来自分类Dev

i2cdetect不会显示设备,但它在那里

来自分类Dev

丢失的 ”;” 在标识符“名称”之前,即使它在那里

Related 相关文章

  1. 1

    Vim说'missing:endif',但是我确定它在那里

  2. 2

    Firebase 说我在 Manifest 中缺少一行,但它在那里

  3. 3

    当地的apt-mirror说找不到发布,但是在那里,我想念的是什么

  4. 4

    Mongo更新响应说没有文档更新,但是文档在那里

  5. 5

    PWA:清单在那里,但是Chrome说“找不到清单”吗?

  6. 6

    列在那里,但是当我尝试删除它时,它说MYSQL中没有列?**错误代码:1091。无法删除... **

  7. 7

    列在那里,但是当我尝试删除它时,它说MYSQL中没有列?**错误代码:1091。无法删除... **

  8. 8

    Django找不到我的基本模板,但是它在那里

  9. 9

    Devise无法检测到:omniauthable,但是它在那里

  10. 10

    img不可见..但是它在那里

  11. 11

    秘密密钥在那里,尽管它说在Django中没有秘密密钥

  12. 12

    “没有这样的文件或目录”,但是它在那里。

  13. 13

    apt-get表示未找到Version,但是它在那里

  14. 14

    apt-get表示未找到Version,但是它在那里

  15. 15

    为什么我会收到“ -bash:'alias:命令未找到”,但它在那里..?

  16. 16

    我收到FileNotFoundException但文件在那里

  17. 17

    即使在两周后仍无法在Google Play商店中找到应用,但是它在那里

  18. 18

    类包不包含src.main.java,但是它在那里并且eclipse抱怨它

  19. 19

    缺少所需的请求正文,但它在那里

  20. 20

    “类”不包含“方法”的定义,但它在那里

  21. 21

    我收到未定义索引的通知,但是索引在那里

  22. 22

    为什么vim有时显示^ M而有时不显示(即使它们在那里)?

  23. 23

    为什么vim有时显示^ M,有时却不显示(即使它们在那里)?

  24. 24

    为什么我断言元素包含某个字符串失败,即使它在那里?

  25. 25

    form_for helper 给了我一个错误,尽管它在那里缺少一个参数

  26. 26

    编译器说方法是不确定的...但是(我认为)

  27. 27

    为什么Rails 4会说缺少帮助文件,尽管它在那里?

  28. 28

    i2cdetect不会显示设备,但它在那里

  29. 29

    丢失的 ”;” 在标识符“名称”之前,即使它在那里

热门标签

归档