vim底部的[converted]是什么意思?

vim底部的[converted]是什么意思?

我有一个日志文件,当我通过 vim 打开它时,它看起来不可读,并且它在底部已[转换]。 [已转换] 是什么意思?

有没有办法解决格式问题以便人类可读?

答案1

这意味着vim检测到该文件与您的语言环境给出的字符集不匹配并进行了转换。如果您:set从内部运行命令vim

:set
--- Options ---
  autoindent          fileformat=dos      scroll=7            textwidth=70
  background=dark     filetype=asciidoc   shiftwidth=2        ttyfast
  cscopetag           helplang=en         softtabstop=2       ttymouse=sgr
  cscopeverbose       hlsearch            syntax=asciidoc
noendofline           list                tabpagemax=3
  expandtab           ruler               textmode
  backspace=indent,eol,start
  comments=s1:/*,ex:*/,://,b:#,:%,:XCOMM,fb:-,fb:*,fb:+,fb:.,fb:>
  cscopeprg=/usr/bin/cscope
  fileencoding=utf-8
  fileencodings=ucs-bom,utf-8,latin1

请注意最后 2 个选项fileencoding& fileencodings

第一个是当前文件使用的编码,第二个是逗号分隔的已识别编码列表。

因此,当您看到该消息时,vim告诉您已完成将文件fileencodingencoding.

查看:help fileencoding:help encoding了解更多详细信息。

参考

我找到了下面的线程,当我回答这个问题时,我将其用作来源。原始站点现已消失(可在该答案的历史记录中访问),因此为了子孙后代,我将该线程的内容移至此处。这链接仍然在 Wayback Machine 中

#1 Eli the Bearded January 21st, 2004 - 06:51 pm ET | Report spam
In comp.os.linux.misc, Leon. wrote:
Hide the quote
"Gaétan Martineau" wrote in message
news:E9jLb.2903$
> [ system_notes]$ vi installation_chouette.txt
> What means the [converted] at the bottom of the screen, as in:
> "installation_chouette.txt" [converted] 2576L, 113642C

It means that vim detected that the file did not match the
charset given by your locale and made a conversion. What does

:set

Tell you about "fileencoding" and "fileencodings"? The first is
the encoding used for the current file, the second is a comma
separated list of recognized encodings.

Hide the quote
> This file has accented characters. How can I save the file so that if I
> reload if again, I do not see "converted"?



Figure out what charset you want, and then

:set fileencoding=[charset]
:w

Hide the quote
It means deleting the Microsoft Dos/ Windows CR LF end of lines, to just
LF - unix standard end of lines.

It does not. If you open a file with DOS line ends, vim reports [dos]
after the filename, not [converted]. If you do have a dos file that
you wish to convert to unix line ends, you can

:set fileformat=unix
:w

Elijah

答案2

vim命令模式下,输入:

:help read-messages

你可以看到:

[converted]      conversion from 'fileencoding' to
                 'encoding' done

一般来说,这意味着 vim 检测到该文件与您的语言环境给出的字符集不匹配并进行了转换。

要查看更多详细信息,请尝试:help fileencoding, :help fileencodings

答案3

这意味着磁盘上的文件不使用与 Vim 内存区域相同的字符集,并且从一种到另一种的转换成功。按退出键并输入此命令。

:set fileformat=unix

保存文件并尝试再次读取。

答案4

其他答案很好地解释了含义,但以下是如何以编程方式修复它。

修复方法

使用 确定文件编码file,然后使用 进行转换iconv

$ iconv -f $(file -b --mime-encoding my_file) -t utf-8 my_file > my_file_converted

说明

  • iconv -f设置您想要“from”编码的编码
  • file -b --mime-encoding my_file输出当前文件的编码,例如iso-8859-1
  • -t utf-8设置您想要编码“to”的编码
  • my_file > my_file_converted将转换后的数据写入文件;iconv默认写入标准输出。

有关的:https://stackoverflow.com/questions/805418/how-can-i-find-encoding-of-a-file-via-a-script-on-linux

相关内容