`
jywhltj
  • 浏览: 47132 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

处理编码问题利器之文本编辑器⑵——Vim

阅读更多

接上文,跨平台的开源软件 VimwxMEdit 是我用过的两个最擅长处理编码问题的文本编辑器。

上文说了 wxMEdit

wxMEdithttp://wxmedit.github.io/zh_CN/

接下来再看 Vim

Vimhttp://www.vim.org/

 

Vim 是什么

Vim是世界上公认的第二大文本编辑器(第一大是 GNU Emacs;似有“Emacs 是神的编辑器、Vim 是编辑器之神”之说)。很多人会觉得 vim 很不易用,这其中也有一定的误解。

 

首先需要弄清楚的是 vim 不是 vi。如今的 vim 是 Vi IMproved 的缩写,相对原始 vi 做了相当多的改善,原本 vi 的功能只占它现有功能很少的一部分。

 

Vim 易用性

Vim 并不像想象中的那么难用,不习惯用“h、j、k、l”移动光标,完全可以用上下左右,甚至 home、end、page up、page down。

 

如果在 Windows 上安装 vim,按照默认设置,它会生成一个“gVim Easy”,它看起来更像是功能加强版的记事本,可以使用 Ctrl-C、Ctrl-V、Ctrl-Z、Ctrl-A 这些快捷键,也会有菜单、右键菜单、工具栏。 Windows 版 gVim 默认配置也支持这些,差别是默认是普通模式而不是插入模式。

 

当然要想用到 vim 更多强大功能就需要了解它的普通模式、命令模式乃至可视模式和选择模式了。这样就的确需要了解一定量的命令技巧才行。


Vim 编码识别

Vim 的编码识别是基于配置的,未配置或者按照默认配置可能效果很差,这就是我们用 vim 打开一个常看到一堆乱码的原因之一(另外的原因是上面部分 linux 系统安装的是精简版的 vim,不支持相关特性)。

 

如果针对特定环境配置得当,它的编码识别准确率甚至高于 universal-chardet(firefox 的编码识别部分,MadEdit 也用它识别编码的,wxMEdit 改用 ICU)、enca(一个自动编码识别工具)。例如用下列设置:

set fencs=us-ascii,ucs-bom,utf-8,gbk,gb18030,big5,latin1

去识别简体中文为主有少量繁体中文代码的编码比 universal-chardet、enca 都要精准。这里 fencs 设置只是为了说明编码识别举例,一般很少会单独识别 us-ascii,参见我的 vimrc

 

如果仍然识别错了,还可以手动指定编码,例如

echo "0: 32 30 30 30 96 32 30 34 39" | xxd -g1 -r > test.txt
vim test.txt

如果 fencs 用上面的设定,这时 vim 会识别编码为 latin1(即 ISO-8859-1),查询 vim 识别到的编码用

:set fenc?

问号可以省略。

 

但是其中字符 '\x96' 在 ISO-8859-1 中未定义(未定义字符 vim 会用蓝色显示其编码值),可以人为判断它是 windows-1252 编码(可显字符是 latin1 的超集)的。可通过下面命令手动指定为 windows-1252 编码。

:e ++enc=cp1252

可以看到,该字符是个短线,但是因为我还设置了 ambiwidth=double,所以它显示一个汉字宽,参见 vim 中文文档-ambiwidthEast Asian Width。这也是 vim 具有良好国际化支持的一个特性,该特性对于中日韩用户尤其重要。

Vim 编码转换

类似上面手动指定读取编码的方式,也可以手动指定写入编码,如以 utf-8 编码保存
:w ++enc=utf8 | e
:set fenc=utf8 | w
上面两种方式实际上都是两个命令,竖线“|”是 vim 命令的分隔符,相当于 shell 的分号“;”。
不想立即保存,用
:set fenc=utf8
即可。

BOM 支持
如上文保存为 utf-8 编码的文件时,默认是没有 BOM 的。如果要让其包含 BOM,需要在保存前 set bomb:
:set bomb | w ++enc=utf8 | e
:set bomb fenc=utf8 | w
不想立即保存,用
:set bomb fenc=utf8
即可。

如果对一已有 BOM 的 UTF-x 编码的文件,要去掉其 BOM,用
:set nobomb | w
不想立即保存用
:set nobomb
即可。

查询一个 UTF-x 编码的文件是否有 BOM,用:
:set bomb?
问号不可省略。
 
有任何问题和建议可以留言,或者发邮件给我 jiaywe[at]gmail.com。
  • 描述: laint1还是windows-1252
  • 大小: 1.2 KB
  • 描述: laint1还是windows-1252
  • 大小: 903 Bytes
分享到:
评论

相关推荐

    普通人的编辑利器——VIM

    普通人的编辑利器——VIM_(for_windows)

    程序员的编辑器——VIM(zz) - 饮水思源

    VIM(Vi IMproved)是Linux世界中广受欢迎的文本编辑器,对于程序员来说,它不仅是一个工具,更是一种高效的工作方式。这篇文章将深入探讨VIM的使用技巧和重要概念,帮助你提升编辑效率。 首先,VIM的操作模式是其...

    文本编辑器推荐:VIM

    **文本编辑器推荐:VIM** VIM,全称Vi IMproved,是Vi编辑器的增强版,是一款功能强大的文本编辑器,广泛应用于Linux、Unix等操作系统中,也支持Windows平台。VIM的设计理念是高效且高度可定制,使得它在程序员和...

    文本编辑器VI——Linux的基础

    在Linux世界中,文本编辑器VI(Vim Improved)是一个不可或缺的工具,尤其对于初学者而言,掌握它的基本操作是入门Linux系统的关键步骤。VI是一个强大的命令行文本编辑器,以其高效、灵活和功能强大而著称。在这个...

    linux-文本编辑器Vim使用视频教程

    05.1 文本编辑器Vim-Vim常用操作.mp4 05.2 文本编辑器Vim-Vim使用技巧.mp4

    普通人的编辑利器——Vim.

    Vim的操作,实例讲解,操作文本的详细介绍

    Windows下的vi文本编辑器(vim)

    windows下的vi编辑器,不需要其他dll之类,单文件就可以在windows下面执行,喜欢在linux下用vi的有福了,这个是我找了很久才找到的,现在新版的vim在Windows下面都需要其它文件才能运行

    vim配置文件——vim配置教程

    vim配置文件——vim配置教程

    普通人的编辑利器——Vim

    让我们熟悉VIM的基本操作,同时用助于深入学习VIM。

    一个仿vim的文本编辑器

    【标题】:“一个仿vim的文本编辑器” 在IT领域,文本编辑器是开发者们日常工作中不可或缺的工具,它们用于创建、查看和修改各种类型的文本文件。Vim(Vi Improved)是一个高度可定制且功能强大的命令行文本编辑器...

    [最优秀的文本编辑器.Vim.(绿化版)].Vim

    作为一款高度可配置的编辑器,Vim深受程序员和系统管理员的喜爱,被誉为最优秀的文本编辑器之一。 1. **历史与特性** Vim起源于1976年的Vi(Visual Editor),由Bill Joy为Unix系统开发。Vim在Vi的基础上进行了...

    基于C/C++语言的简易vim编辑器 仿vim编辑器

    # 基于C/C++语言的简易vim编辑器 仿vim编辑器 1. 编辑器下有normal和insert两种模式。默认为normal模式,按i键进入insert模式,按esc退出insert模式。 2. normal模式下按 h j k l键向左上下右移动光标。 3. normal...

    算法工程师的效率神器——vim篇.pdf.rar

    Vim,全称Vi IMproved,是一款强大的文本编辑器,尤其在编程和代码编辑方面表现出色。它以其高度可定制化、高效的操作方式以及丰富的插件系统,深受程序员和算法工程师的喜爱。 首先,Vim提供了高效的文本操作命令...

    vi&vim文本编辑器使用教程.zip

    **vi与vim文本编辑器详解** vi(Visual Editor)是一个基于命令行的文本编辑器,最初在1976年由Bill Joy为Unix系统编写。它的全称是“Visual Interface”,但在许多现代Linux和Unix-like系统中,vi已被其增强版vim...

    Vim文本编辑器

    Vim文本编辑器,全称为“Vi Improved”,是一款强大的、高度可配置的文本编辑器,被誉为程序员和系统管理员的最佳工具之一。它起源于最初的Vi编辑器,由 Bram Moolenaar 在1991年基于Bill Joy的Vi开发,经过多年的...

    算法工程师的效率神器——vim篇.pdf

    算法工程师的效率神器——vim篇.pdf

    Linux文本编辑器-vim.pdf

    "Linux文本编辑器Vim的使用和应用" Linux文本编辑器Vim是一个功能丰富且强大的文本编辑器,被广泛用于Linux系统。它是Vi的增强版本,提供了更多的功能和改进,同时可以通过插件扩展其功能。Vim提供了三种模式:命令...

    windows下的vim文本编辑器

    windows下的vim文本编辑器,本人已将vim程序和vim运行时环境整合到了一起,下载解压后,点击install即可安装。然后添加环境变量到path。位置为当前解压的路径如:d:\vim732\vim。然后再ms_dos下敲入vim即可使用,比...

Global site tag (gtag.js) - Google Analytics