5

関数で 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

F4VIMを押すと、動作します。しかし、常にエラーメッセージが表示されE20: Mark not setます。エラーは最後の2行で発生すると思いました。しかし、私は解決策を見つけることができません。
やってみechoerrました。それは機能しますが、私が何であるかではありません。私は試しechomsgてみechoました。しかし、うまくいきません。メッセージ出力なし。しかし、エラーメッセージは次のように表示されE20: Mark not setます。

さらに、エコー行全体を削除しても。同じエラーが再び表示されます。

VIM のバージョンは 7.0.237 です。

4

2 に答える 2

11
E20: Mark not set

通常、これは存在しないマークにジャンプしようとしていることを意味します。

あなたの地図を見てください:

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

最後は何'sですか?マークはありsますか?

  • このエラーメッセージはメッセージをクリアします (関数でエコーされます)。それがあなたがそれを見ることができない理由です。
  • 「タイプミス」の前に発生したため、関数は機能しました
于 2013-03-21T17:30:58.377 に答える