我在使用功能更新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
。它有效,但不是我的意思。
我单独尝试了echomsg
和echo
。但它不起作用。没有消息输出。但错误消息显示为E20: Mark not set
。
此外,即使我删除整个回声线。同样的错误再次出现。
VIM版本是7.0.237。
答案 0 :(得分:9)
E20: Mark not set
通常这意味着你试图跳到一个不存在的标记。
看看你的地图:
map <F4> :call UpdateTitle()<cr>'s
最后's
是什么?你有标记s
吗?
答案 1 :(得分:0)
如果由于事故而看到E20: Mark not set
,则可以继续尝试运行的命令。
例如点击i
进入编辑模式,消息将消失。
我试图输入反引号`,然后输入字母,以为我处于编辑模式,这恰好是您跳到标记的方式(请参见Using marks)。 / p>