为什么 CR 序列 (\r) 被输入到 .vimrc 文件中?

为什么 CR 序列 (\r) 被输入到 .vimrc 文件中?

请查看下面我的 '~/.vimrc' 文件。

:map g :w
:map g :w

看,同一行重复了。写完第一行后,我按了“Enter”键。

现在查看下面 od 命令的输出。

ravi@ravi-Aspire-5315:~$ od -bc .vimrc
0000000 072 155 141 160 040 147 040 072 167 015 012 072 155 141 160 040
          :   m   a   p       g       :   w  \r  \n   :   m   a   p    
0000020 147 040 072 167 015 012
          g       :   w  \r  \n
0000026
ravi@ravi-Aspire-5315:~$

我想知道为什么在这里输入 CR (\r) 序列,因为这是 Linux 而不是 Windows 机器。

现在我更改 .vimrc 文件的内容如下:

:set showmode

现在,当我运行od命令时,它输出:

ravi@ravi-Aspire-5315:~$ od -bc .vimrc
0000000 072 163 145 164 040 163 150 157 167 155 157 144 145 015 012
          :   s   e   t       s   h   o   w   m   o   d   e  \r  \n
0000017

现在vim每当我通过命令打开任何文件时都会抛出错误vim

vim .vimrc
Error detected while processing /home/ravi/.vimrc:
line    1:
E488: Trailing characters: showmode^M
Press ENTER or type command to continue

我知道该错误是由于与“^M”相同的 CR (\r) 序列造成的。

2 个问题

1)为什么在序列命令vim中抛出错误,但在命令中没有抛出错误。set\rmap

2) 令人惊讶的是,为什么\r要进入,因为这是 Linux 而不是 Windows 机器。我正在使用 Ubuntu 15.10。

答案1

通常,诸如这样的行

:map g :w

会有一个字面意思^M结束,允许用户的地图命令无需按 即可完成Enter

如果.vimrc足够短,例如,仅由几行组成,其中大多数都有^M结尾,vim 会猜测该文件使用 DOS(回车/换行)结尾,并始终使用该约定将更新存储到文件中。

供进一步阅读

该文件.vimrc就像任何其他文本文件:vim 会猜测它是阅读时的行结尾。事实上,您应该能够在原始文件的末尾创建一个包含两个 ^M 的文件:(1) 用于结束命令map,(1) 用于结束行。

相关内容