美元符号在Vim和it中显示为行尾字符';这是不可能消除的

美元符号在Vim和it中显示为行尾字符';这是不可能消除的,vim,Vim,当我尝试执行脚本时,我得到的^M是无效字符,但在Vim中,我在输入:set list时看到$ 我尝试了:%s/^V^M//g,但它说找不到^M模式 我猜发生这种情况是因为我使用了一些。我找到的vimrc将行尾字符转换为$ 没有弄清楚这一点,我唯一的选择就是重新键入脚本。您使用的是Windows还是*nix 在windows中,您可以将^M替换为ctlr-q ctrl-M以输入^M。在*nix中,您可以使用dos2unix将脚本文件转换为unix格式。您使用的是windows还是*nix 在win

当我尝试执行脚本时,我得到的
^M
是无效字符,但在Vim中,我在输入
:set list
时看到
$

我尝试了
:%s/^V^M//g
,但它说找不到
^M
模式

我猜发生这种情况是因为我使用了一些
。我找到的vimrc
将行尾字符转换为
$


没有弄清楚这一点,我唯一的选择就是重新键入脚本。

您使用的是Windows还是*nix


在windows中,您可以将^M替换为
ctlr-q ctrl-M
以输入^M。在*nix中,您可以使用dos2unix将脚本文件转换为unix格式。

您使用的是windows还是*nix


在windows中,您可以将^M替换为
ctlr-q ctrl-M
以输入^M。在*nix中,您只需使用dos2unix将脚本文件转换为unix格式。

se nolist
美元符号将消失

无论操作系统是什么,文本中总是有行尾


行尾为空白且始终存在,但通常不显示。

se nolist
美元符号将消失

无论操作系统是什么,文本中总是有行尾


行尾是空白且始终存在,但通常不显示。

看起来您的脚本始终具有
^M
行尾,因此被检测为
fileformat=dos
<代码>:设置本地文件格式?将告诉您

要将此文件转换为Unix(LF)行结尾,只需
:setlocal fileformat=Unix
:write
,或将其组合到
:w++ff=Unix
中即可


如果您不希望Vim检测此类文件(并显示
^M
),请将
:set fileformats-=dos
放入
~/.vimrc
(或编辑现有配置)。

看起来您的脚本始终具有
^M
行结尾,因此被检测为
fileformat=dos
<代码>:设置本地文件格式?将告诉您

要将此文件转换为Unix(LF)行结尾,只需
:setlocal fileformat=Unix
:write
,或将其组合到
:w++ff=Unix
中即可


如果您不希望Vim检测到此类文件(并显示
^M
),请将
:set fileformats-=dos
放入
~/.vimrc
(或编辑现有配置)。

如果打开文件后在行尾没有看到
^M
,但是,当您尝试寻找it资源时,vim确实会在不同的地方显示关于
^M
的投诉,您需要做的唯一一件事就是
w++ff=unix
并重新打开此文件

当您打开文件时,vim检测行尾格式。因此,尝试替换
^M
将不起作用:所有检测到的行尾都将转换为内部字符串结尾。例如,在您的情况下,当文件格式类似dos时

set nocompatible\r\nset ignorecase\r\n...
set nocompatible\nset ignorecase\n...
set nocompatible\rset ignorecase\r...
(其中,
\r
是回车符,有时表示为
^M
\n
是换行符,
\r\n
序列是dos换行符)。当文件格式为unix时,它看起来像

set nocompatible\r\nset ignorecase\r\n...
set nocompatible\nset ignorecase\n...
set nocompatible\rset ignorecase\r...
。对于mac来说,它看起来像

set nocompatible\r\nset ignorecase\r\n...
set nocompatible\nset ignorecase\n...
set nocompatible\rset ignorecase\r...
。但如果vim正确地检测到所有这些文件都转换为

"set nocompatible"
"set ignorecase"
"..."
内部结构中的C字符串表示缓冲区,每个字符串表示一行。没有
\r
\n
存在


执行
时:w
文件将转换回字节序列<代码>:w++ff=unix强制行结束。需要重新打开,因为在这种情况下,
fileformat
设置没有更改,因此不带
++ff
的下一个
w
将再次以dos行结尾保存。重新打开时,将重新检测行尾,并重新指定
fileformat
设置。您可以在
:w++ff=unix
之后手动设置fileformat=unix,但是
:e
的键入速度要快得多。

如果打开文件后在行尾没有看到
^M
,但是,当您尝试寻找it资源时,vim确实会在不同的地方显示关于
^M
的投诉,您需要做的唯一一件事就是
w++ff=unix
并重新打开此文件

当您打开文件时,vim检测行尾格式。因此,尝试替换
^M
将不起作用:所有检测到的行尾都将转换为内部字符串结尾。例如,在您的情况下,当文件格式类似dos时

set nocompatible\r\nset ignorecase\r\n...
set nocompatible\nset ignorecase\n...
set nocompatible\rset ignorecase\r...
(其中,
\r
是回车符,有时表示为
^M
\n
是换行符,
\r\n
序列是dos换行符)。当文件格式为unix时,它看起来像

set nocompatible\r\nset ignorecase\r\n...
set nocompatible\nset ignorecase\n...
set nocompatible\rset ignorecase\r...
。对于mac来说,它看起来像

set nocompatible\r\nset ignorecase\r\n...
set nocompatible\nset ignorecase\n...
set nocompatible\rset ignorecase\r...
。但如果vim正确地检测到所有这些文件都转换为

"set nocompatible"
"set ignorecase"
"..."
内部结构中的C字符串表示缓冲区,每个字符串表示一行。没有
\r
\n
存在


执行
时:w
文件将转换回字节序列<代码>:w++ff=unix强制行结束。需要重新打开,因为在这种情况下,
fileformat
设置没有更改,因此不带
++ff
的下一个
w
将再次以dos行结尾保存。重新打开时,将重新检测行尾,并重新指定
fileformat
设置。你可以在
:w++ff=unix
之后手动设置fileformat=unix,但是
:e
打字要快得多。

你的文件不包含美元符号;这只是
vim
set list
使用的字符,用于显示任何解释为行尾的内容。您的问题标题具有误导性。您的文件不包含美元符号;这只是
vim
set list
使用的字符,用于显示任何被解释为行尾的内容。您的问题标题具有误导性。