Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 如何替换<;e9>;由é;精神抖擞_Search_Vim_Utf 8_Ansi - Fatal编程技术网

Search 如何替换<;e9>;由é;精神抖擞

Search 如何替换<;e9>;由é;精神抖擞,search,vim,utf-8,ansi,Search,Vim,Utf 8,Ansi,我想搜索“”并将其替换为“é” :%s///g 不起作用,但看起来vim很特别 /ctrl+v xe9 只查找正确的“é”,而不查找“” 如果我打开并键入:ascii,则得到以下结果: 233,Hexa 00e9,八进制351 如果我在“é”上输入:ascii,则得到以下结果: 233,Hexa 00e9,八进制351 您的文本已经包含正确的字符(如:ascii命令所示),只是Vim没有这样显示它。(您可以使用其他文本列表器/编辑器进行验证。) 字符的显示方式由'isprint'选项控制。它的帮

我想搜索“”并将其替换为“é”

:%s///g

不起作用,但看起来vim很特别

/ctrl+v xe9

只查找正确的“é”,而不查找“”

如果我打开并键入:ascii,则得到以下结果:

233,Hexa 00e9,八进制351

如果我在“é”上输入:ascii,则得到以下结果:

233,Hexa 00e9,八进制351


您的文本已经包含正确的
字符(如
:ascii
命令所示),只是Vim没有这样显示它。(您可以使用其他文本列表器/编辑器进行验证。)

字符的显示方式由
'isprint'
选项控制。它的帮助说:

当“编码”是Unicode编码时,从128到255的非法字节将被删除 显示为
,带有字节的十六进制值

因此,假设您没有更改“isprint”值,您可能在检测编码时遇到问题。检查

:set encoding? fileencodings? fileencoding?

正确。

您的文本已经包含正确的
字符(如
:ascii
命令所示),只是Vim没有这样显示它。(您可以使用其他文本列表器/编辑器进行验证。)

字符的显示方式由
'isprint'
选项控制。它的帮助说:

当“编码”是Unicode编码时,从128到255的非法字节将被删除 显示为
,带有字节的十六进制值

因此,假设您没有更改“isprint”值,您可能在检测编码时遇到问题。检查

:set encoding? fileencodings? fileencoding?
正确。

AFAIK
是一个因编码转换而损坏的单个字符

在命令模式下,当光标位于
上时,发出命令
yl
。这将把角色拉到缓冲区。然后通过发出命令
/-
(这涉及到进入搜索模式,按
CTRL+R
并按
-
)来搜索被拖动的字符。您的搜索应该会找到文本中的所有
字符。最后,使用最后的搜索结果进行替换:

%s//é/g
AFAIK
是一个因编码转换而损坏的单个字符

在命令模式下,当光标位于
上时,发出命令
yl
。这将把角色拉到缓冲区。然后通过发出命令
/-
(这涉及到进入搜索模式,按
CTRL+R
并按
-
)来搜索被拖动的字符。您的搜索应该会找到文本中的所有
字符。最后,使用最后的搜索结果进行替换:

%s//é/g

正常情况下,它应该可以工作,但非法字符可能不是这种情况。请使用
”重试,即
CTRL-R
后跟
。连字符寄存器
-
不正确。它与“而非-但它是搜索«é»一起工作,而不是正常工作,但这可能不是非法字符的情况。请使用
重试,即
CTRL-R
后跟
。连字符寄存器
-
不是正确的。它与“代替-但它是搜索«é»代替编码=utf-8 fileencodings=utf-8 fileencoding=@ChoiZ”一起工作:您的文件可能被编码为拉丁文1(又名iso-8859-1,或者0xE9是é的其他编码,如cp1252),但您的
文件编码设置会使其始终加载为utf-8(其中字节0xE9本身无效),因此Vim以
格式显示字符。您可以使用
:e++enc=latin1
将文件加载为latin1。如果要将其转换为utf-8,请使用
:set fenc=utf-8 | w
(字符将被写入两个字节:0xC3 0xA9)。回答得很好@ChrisJohnsen!我可以指定将一些行转换为拉丁文1吗?将另一行保留为utf8吗?@ChoiZ:如果您有iconv(例如,您在Unixy系统上),那么您可能可以使用(例如)
:4,5!iconv-f拉丁文1-t utf-8
来转换第4行和第5行(或者做一个视觉选择,然后键入
:!iconv
…;
“@ChrisJohnsen多亏了你,我在vim中学习了++enc,这太棒了。我试图将拉丁文1拉入寄存器。encoding=utf-8 fileencodings=utf-8 fileencoding=@ChoiZ:你的文件可能被编码为拉丁文1(也称为iso-8859-1,或0xE9为é的其他编码,如cp1252),但您的
fileencodings
设置使其始终作为utf-8加载(其中字节0xE9本身无效),因此Vim以
格式显示字符。您可以使用
:e++enc=latin1
将文件加载为latin1。如果您想将其转换为UTF-8,则随后使用
:set fenc=UTF-8 | w
(字符将被写入两个字节:0xC3 0xA9)。回答得很好@ChrisJohnsen!我可以指定将一些行转换为拉丁文1吗?而将另一行保留为utf8吗?@ChoiZ:如果您有iconv(例如,您在Unixy系统上),那么您可能可以使用(例如,
:4,5!iconv-f latin1-t utf-8
来转换第4行和第5行(或者做一个视觉选择,然后键入
:!iconv
…;
“@ChrisJohnsen多亏了你,我在vim中学习了++enc,这太棒了。我尝试将拉丁文1拉入寄存器。