弄清楚了

弄清楚了

我刚刚创建了一个 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

答案2

这就是映射的工作原理:替换发生整个映射已输入。

要创建命令别名,请尝试cmdalias 工具脚本。

相关说明一下,:setl ff=unix

相关内容