尝试在VIM中更新信息时出现“E20:Mark not set”

时间:2013-03-21 17:22:43

标签: vim

我在使用功能更新VIM中的信息时遇到了麻烦。我的代码如下:

map <F4> :call UpdateTitle()<cr>'s
"Update the latest modification time and filename
function UpdateTitle()
    normal m'
    execute '/# *Last modified:/s@:.*$@\=strftime(": %Y-%m-%d %H:%M")@'
    normal ''
    normal mk
    execute '/# *Filename:/s@:.*$@\=": ".expand("%:t")@'
    execute "noh"
    normal 'k
    echohl WarningMsg | echo "Successful in updating the copyright." | echohl None
endfunction

当我在VIM中按 F4 时,它可以正常工作。但它始终显示错误消息E20: Mark not set。我以为错误发生在最后两行。但我找不到解决办法 我试过了echoerr。它有效,但不是我的意思。 我单独尝试了echomsgecho。但它不起作用。没有消息输出。但错误消息显示为E20: Mark not set

此外,即使我删除整个回声线。同样的错误再次出现。

VIM版本是7.0.237。

2 个答案:

答案 0 :(得分:9)

E20: Mark not set

通常这意味着你试图跳到一个不存在的标记。

看看你的地图:

map <F4> :call UpdateTitle()<cr>'s

最后's是什么?你有标记s吗?

  • 此错误消息将清除您的消息(在您的函数中回显)。这就是为什么你看不到它。
  • 该功能有效,因为它发生在您的“错字”
  • 之前

答案 1 :(得分:0)

如果由于事故而看到E20: Mark not set,则可以继续尝试运行的命令。

例如点击i进入编辑模式,消息将消失。

我试图输入反引号`,然后输入字母,以为我处于编辑模式,这恰好是您跳到标记的方式(请参见Using marks)。 / p>