美元符号在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
使用的字符,用于显示任何被解释为行尾的内容。您的问题标题具有误导性。