如何在 Vim 中添加前模式映射?

Nat*_*ong 4 vim

我刚刚创建了一个 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 键运行它。

我怎样才能做到这一点?

Nat*_*ong 5

弄清楚了

显然我想要的根本不是映射,而是命令。因此,最后一行应替换为:

command Linebreak call UseUnixLineBreaks()
Run Code Online (Sandbox Code Playgroud)

注意大写的“L”——用户定义的命令必须以大写字母开头。见:help command