在VIM中查看EBCDIC格式化文件的最佳方法是什么?
答案 0 :(得分:6)
首先,如果Vim已经编译并且在默认编码为EDCDIC的系统上运行(例如,带有ANSI C编译器的IBM manframe),那么Vim将默认在系统的代码页中打开EBCDIC文件。这样的Vim实例将具有:
has("ebcdic")
评估为1
。当使用--version
调用时,Vim将打印:
+ebcdic
未在EBCDIC环境中编译的Vim实例永远不会将has("ebcdic")
评估为true。需要Vim的这一功能,因为其他功能在纯粹的EBCDIC环境中表现不同。
然而,今天的大多数系统都不使用EBCDIC代码页。对于需要在更受欢迎的系统上在Vim中编辑EBCDIC代码页中编码的文件的情况,Vim使用iconv
库。实质上,为了能够打开在EBCDIC代码页中编码的文件,需要使用iconv
支持编译Vim。 iconv
支持可以通过评估来测试:
has("iconv")
或者搜索
+iconv
输出vim --version
中的字符串。
EBCDIC有几个代码页,Vim只能使用编译它的iconv
库支持的代码页。要检查哪些代码页可用,您可以使用iconv
库附带的iconv
实用程序:
iconv --list
现在,让我们假设我们有一个名为myfile
的文件,其中包含EBCDIC-US
代码页(也称为EBCDIC-037
代码页),{{1}安装在系统上支持此代码页。
在Vim中打开文件之前,我们需要将Vim的编码设置为iconv
,我们需要utf-8
:
~/.vimrc
set enc=utf-8
建议如果执行任何文件转换(通过:h fenc
),则必须将编码设置为utf-8
。否则,在写回文件时可能会丢失数据。
现在我们使用iconv
在Vim中打开文件,然后查看损坏的字符。没关系,我们现在需要使用vim myfile
执行转换:
iconv
Vim现在会在:e ++enc=EBCDIC-US
中显示该文件,但会将该文件保存在utf-8
中,这两个文件都是动态使用EBCDIC-US
次转化完成的。
IBM对代码页命名的映射:
iconv
和EBCDIC-037
EBCDIC-273
EBCDIC-500
...
的名字
iconv
通常是非平凡的。但是,如果显示编码(EBCDIC-US
EBCDIC-AT-DE-A
EBCDIC-BE
...
)设置为enc
,那么使用
utf-8
直到找到正确的转换。
额外注意事项:如果您有更多与Vim相关的问题,请考虑使用vi.SE。