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