我刚刚创建了一个 Vim 函数,用于将 Windows 换行符替换为 Unix 换行符。现在我希望能够输入:linebreak
并运行它。这是我的第一次尝试:
function UseUnixLineBreaks()
:%s/^M/\r/g
endfunction
cmap linebreak :call UseUnixLineBreaks()<CR>
(顺便说一下,这^M
是一个控制字符 - 用 输入它Ctrl+v Ctrl+m
)
当我尝试通过键入 来运行它时:linebreak
,它确实运行了,但行为却很奇怪:命令的每个字母按顺序出现,删除了前一个字母。例如,我看到:l
,然后:i
,然后:n
,等等。当我输入最后一个字母时,它会立即运行。
我希望整个命令出现,这样我就能看到我输入的命令是否正确,然后按回车键运行它。
我怎样才能做到这一点?
答案1
弄清楚了
显然我想要的根本不是映射,而是命令。因此,最后一行应该替换为:
command Linebreak call UseUnixLineBreaks()
注意大写的“L” - 用户定义的命令必须以大写字母开头。请参阅:help command
。