vimscript function! 的含义
When [!] is used, an existing function is silently replaced. Unless it is currently being executed, that is an error.
NOTE: Use ! wisely. If used without care it can cause
an existing function to be replaced unexpectedly, which is hard to debug.
function! 表示忽略之前写同名的函数 使用现在定义的函数。注意这将很难debug