Vim 7.3正式版:新功能介绍(附视频、中文帮助文件)

2010年8月15日,超级经典的文本编辑器 Vim(官网介绍) 发布了 7.3 正式版。本文试对Vim 7.3的一些特性进行分析和直观介绍。欢迎Vim爱好者补充指正。
gvim: text editor

1. Vim 7.3 新特性总体介绍

1.1 Vim 7.3 下载

gVim 7.3 Windows直接下载:http://ftp.vim.org/pub/vim/pc/gvim73.exe
更多下载:http://www.vim.org/download.php

1.2 升级安装注意事项

– 安装程序会自动卸载旧版Vim:如果你不放心,也可暂不卸载。
– 安装程序会询问是否保留vimfiles:当然要保留!

更新:中文帮助文件

Vim 7.3 的中文帮助文件已经发布,下载、使用如下:
– 下载:链接
– 解压到合适路径,如 d:\soft\Vim\vimfiles\doc\
– 更新帮助文件的tags,如::helptags d:\soft\Vim\vimfiles\doc\
– 测试新特性的中文帮助,如 :h ‘rnu’@cn

1.3 官方重点强调的新特性:

The biggest additions since 7.2:
– Persistent undo, undo for reload
– Blowfish encryption, also encrypt the swap file
– Conceal text (note: since 7.3a ‘conc’ was renamed to ‘cole’)
– Lua interface
– Python 3 interface

1.4 更多新特性

请在安装新版Vim后,运行 :ver 查看。

2. 隐藏文字(Conceal text)

Vim支持语法高亮,有的语法高亮需要一些额外的标注符,它们并不是文本内容的一部分。比如用VOoM实现带折叠的双栏树状文本管理时,需要用 {{{1、{{{2 这样的符号表示标题级别。这些额外的标注符,最好比较低调。比如,上文就采用了零宽断言(:h zero-width)或contain来区分标注符,然后用link 到 ignore(文字前景色=背景色)的方式来“不显示”。但这里的不显示,只是一种前背景同色的障眼法。相比之下,Vim 7.3的conceal text具备了更强大的功能;某种程度上,相当于inline folding。

2.1 conceal text 功能介绍

Conceal text,直译为“隐藏文字”。不过,译为“可隐藏文字”更符合原意。因为,它的最终效果——是否隐藏、如何隐藏——取决于如下属性/参数:

① syn命令的conceal参数
语句:sy match test_conceal “(善用佳软.*)” conceal
表示:括号内以善用佳软开头的字符串,命名为 test_conceal 组,具备了conceal属性。
更多参见::h conceal

② conceallevel(简称cole)选项值
具备conceal属性的字符串,并不一定是隐藏的。其具体表现取决于conceallevel的值。
☆ 0:默认值,显示。 因此,只设定conceal,并没有任何隐藏效果。
☆ 1:短线高亮。 匹配的字符串缩略显示为一个“-”符号(取决于listchars设定),并采用conceal组的高亮方案。
☆ 2:不显示,除非定义了cchar变量。 举个例子就明白了,如下语句
:syntax match Entity “&”?conceal cchar=&
可以把实体字符显示为原字符,更易于阅读。
☆ 3:完全不显示。
更多参见::h cole

③ concealcursor(简称cocu)参数
该值默认为空,效果就是无论如何隐藏,当光标位于该行时,conceal文字仍会显示。
如果想取消此效果,可设定相应值:n v i c。vim帮助文件中的设定值为nc。
更多参见::h cocu

2.2 conceal text 应用举例

上面的文字已经隐含了两个例子:
– 任何额外标记符的隐藏,如Voom中的 {{{1。还可扩展到vim的帮助文件、vimwiki……
– html源代码中,实体字符的还原显示。

我能想到的例子:
– 用来背单词。比如把英文单词后面的所有释义设为隐藏;光标移在该行时,再显示释义。
– txt格式的读书笔记:参见下面的视频
隐藏 xml/html 标签,只显示文字。示例:

1、如下内容保存为 d:\1.vim
sy match tag_conceal “<.\{-}>” conceal
se cole=3
2、打开html文件,再 :so d:\1.vim ,成功:所有html tag标签隐藏,只显示文字。
3、副作用是原html高亮失效,或许通过其他conclude, transparent参数能控制,但无精力/兴趣继续研究。

3. 相对行号(’relativenumber’ ‘rnu’)

以前,输入 :set nu 会显示行号;现在,输入 :set rnu 会显示相对行号。
所谓相对行号,就是光标所在行为第0行,然后,向上向下分别1、2、3……行标示。
其主要用途,可方便计算移动距离。
但由于翻页/滚屏时,当前行会移动,所以,相对行号只能在一屏内使用。
操作方法:
:set rnu
:set nornu
(nu与rnu不能同时使用)

更多说明::h rnu

4. 彩色列(colorcolumn)

例1:
:set cc=10,20,30
表示把第10、20、30列,进行高亮。

例2:
:set cc=-20,+10,120
表示把 textwidth-20、textwidth+10、第120列,进行高亮。

例3:
:hi colorcolumn guibg=lightgreen
定义高亮列为亮绿色。

功能说明:
– cc列标可以是绝对值,也可以是相对值,如例2所示。
– 会降低屏幕刷新速度。
– 对换行、中文,可能会不连续。

使用说明:
– 我觉得colorcolumn有一个最实用的功能,set cc=81,可以提醒自己写得代码别超过80列 (by ankyhe)

5. 持久性撤销 (更新)

功能介绍:
Vim此前的撤销(u: undo)功能,与大多数软件一样,局限于本次打开文件后所做的编辑。而Vim 7.3新增的持久性撤销(persistence undo),即使文件多次关闭又重新打开编辑,所有的修改都可以u还原回去(当然不能超过’undolevel’的限制)。

相关参数:
– :set undofile。 undofile(udf),缺省关闭,局部于缓冲区。设定后,Vim 在把缓冲区写入文件时,自动保存撤销历史到撤销文件。读入文件到缓冲区时,自动恢复撤销历史。
– ‘undolevels'(‘ul’):可以撤销的最大改变次数。缺省为100或1000。例 set ul=500。
– 指定 undodir。’undodir’指定撤销文件存放的目录。默认是当前目录,为全局变量。 undodir可以是目录名列表,以逗号分隔,格式参见 backupdir。但是,在写入时,会使用第一个存在的目录。因为 “.” 总是可用, 所以”.” 之后的目录不会用来写入。在读取修改历史时,会查找所有的项目来寻找对应的撤销文件,并使用第一个找到的撤销文件。如果该文件不可读,报错,但不再继续查找。

关于撤销文件:
文件名:”.” 代表文件所在的目录。此时,”file.txt” 对应的撤销文件名是 “.file.txt.un~”。如使用其他目录,撤销文件名是被编辑文件的完整路径,但路径分隔符以 “%”代替。
文件保护:撤销树文件中会包含这个文件内容的hash值,这样当一个文件有了撤销树文件后,如果它被其他程序编辑过,Vim会忽略撤销树文件,而不会因此让撤销使文件乱掉。
不会自动删除: 目前Vim只会去创建撤销树文件,而永远不会去删除它们,需要手动删除。因此,我只好把它们放到自己的tmpfs临时目录中,关机自动清除好了。

原有命令的增强:earlier和:later:
这两个命令也增加了一个单位:f——写入次数。比如说,我打开了一个配置文件,编辑N久,保存并测试后不满意,想恢复到原来的样子。怎么办呢?以前我会一直按着u键直到Vim告诉我不能撤销了,或者用备份文件(*~)来覆盖当前文件。现在可以使用命令:earlier 1f直接恢复到上次写入时了。

如何只对某些类型的文件启用undofile:
-通过 BufReadPre autocmd 方式进行设定。
-使用现成的 undofile.vim 脚本。

6. +cursorbind

在比较文件的时候,有个scrollbind功能,可以让被比较的文件同步滚动。但是,在之前的版本中,光标经常并不在同一行。从一个窗口跳转到另一个窗口时,我经常找不到光标的位置了。。。现在好了,有了这个特性,光标的位置也同步了。

7. 是否升级到Vim 7.3的考虑

收益:
– 客观上,提供了新特性;
– 主观上,需要判断这些新特性是否是自己所需要的。

成本:
– 下载、升级;
– 修改gvim路径,从vim72改为vim73。比如:TC中F4编辑器的设定;再比如win+r某些快捷方式的属性(“D:\soft\Vim\vim73\gvim.exe -p –remote-tab-silent f:\now\now\now.htm”)。更好的设置方式是把gvim.exe所在目录写入path变量,在引用时不加路径,直接写为gvim.exe(可以带参数)。
– python兼容性问题。vim7.2对应python2.6,而vim7.3默认需要python2.7,如果某些扩展需要python支持,则需要升级python。

我的建议:
总有一款程序让你如此信任,而随着它同步升级。对我而言,Vim就是如此。

附:视频演示-Vim 7.3 新特性之Conceal text、rnu、cc

用Wink录制的flash演示:492×451, 100+KB.
如无法查看,请检查浏览器设置,或在这里下载附件。

附:文章更新历史

2012-06-07:补充 隐藏html标签。
2010-08-16:更新至 vim 7.3 正式版;补充 undofile.vim 脚本;补充中文帮助
2010-08-01:初稿。
鸣谢:依云ankyhe、yeskky等。

TxtBrowser: 在Vim中高效处理纯文本(更新)

  TxtBrowser是一款Vim插件,旨在提供更好的txt浏览体验。主要功能有:为纯文本自动生成目录树侧边栏(taglist窗口)、语法高亮、多项扩展功能(执行url、网络搜索当前词等)。TxtBrowser由国内网友ypguo开发,近期更新活跃,并且解决了taglist.vim插件不能处理中文文件路径的问题,值得关注。
TxtBrowser: 在Vim中高效处理纯文本。支持中文路径!

一、TxtBrowser功能展示

  以下是功能简介,更多请参见作者介绍,以及官方下载包中的 txtbrowser.cnx 文件。
  上图展示了目录树功能,更多截屏参见此处

1. 目录树侧边栏

  用Vim打开纯文本类型的文件(.txt 或 :se ft=txt),键入一条命令(:Tlist)或按下对应热键(可自定义,示例如下),会生成目录树侧边栏(即taglist窗口)。在目录栏点击相应标签,正文会相应跳转。
  目录栏的内容既包括正文目录,也包括图片目录、表格目录,并可进一步自定义。
  更新正文后,键入命令(:TlistUpdate)或按下对应热键(可自定义,示例如下),即可刷新目录栏。

:nmap <silent> <F8> <ESC>:Tlist<RETURN>
:noremap <silent> <F5> <ESC>:TlistUpdate<RETURN>

2. 语法高亮

  纯文本也可以“多姿多彩”!TxtBrowser可以使关键文字高亮显示,突出显示标题、关键字、列举项。可以提高效率,愉悦心情。通过 :colorscheme colorname 命令,可以尝试不同的着色方案。

3. 其他扩展功能

  * 把光标放到 URL上,执行 :TxtbrowserUrl (或 ←leader→g)打开所在处的URL,包括网址、各种文件(包括pdf、mp3等)、Email地址。
  * 把光标放到单词上,执行 :TxtbrowserWord (或 ←leader→f)打开网络字典查单词。
  * 把光标放到单词上,执行 :TxtbrowserSearch (或 ←leader→s)打开google搜索。

二、TxtBrowser点评及与VOOF对比

1. 对TxtBrowser的评价

  我认为,TxtBrowser是值得关注和支持的一款Vim扩展。推荐有需求的网友试用、使用。理由如下:
  * TxtBrowser立志要成为vim txt的集成解决方案,无论对编程人员查看技术文档,还是非编程人员记录笔记,都十分有益。
  * 作者ypguo系国内网友,诚心听取意见、积极更新程序。
  * 非常难得的是,作者从开始使用Vim到写出这款扩展竟然不到两年时间(via)。或许,这也反过来证明了vim的强大和作者的开发功力吧。

2. TxtBrowser几项功能的内部比较

  TxtBrowser插件的最大亮点功能是目录侧边栏。这对于查看长篇技术文档,或自己做笔记,很有帮助。
  至于语法高亮和其他扩展功能,早已经在其他扩展中得以实现。用户可以把TxtBrowser作为txt的集大成解决方案,来使用这些功能。也可以进行自定义、修改,或选用更强大的专门扩展。

3. TxtBrowser vs VOOF (更新)

a. 从目录导航功能看,两者差别不大,但运行环境分别需要taglist和python。
  从目录导航功能来看,TxtBrowser与VOOF(主页介绍)算是同类。我认为两者的长处与短处都是相对的,大家可根据自己的需要进行选择。
  各有长短:TxtBrowser依赖ctags、taglist;VOOF依赖Python。
  TxtBrowser胜出:其标题行来自.ctags文件定义,默认是“数字打头,后跟标题”等这样的形式,不需额外标注。而VOOF需要手工增加{{{这样的标识符。
  速度与功能:似乎VOOF的Python更快一些(未做严格测试),并且VOOF可以通过目录栏对正文段落进行前后调整、级别调整。
  中文兼容:如果采用官方taglist.vim,则TxtBrowser在Windows下,当文件或路径中含有中文空格时,目录不能正常显示(Linux下正常)。但是,ypguo对taglist.vim进行了修正,解决了此问题。
b. TxtBrowser附带了文本辅助功能,而VOOF则具备实用的节点管理功能
  TxtBrowser还具备txt语法高亮、快速打开url、搜索、翻译功能。但这些功能与目录功能实际上并无直接关系,也可以拆为两个扩展,或换用其他扩展实现。
  VOOF的优势则体现在节点管理上,VOOF的目录树不仅可以导航,也能进行节点操作。比如,节点位置的前后移动、提高或降低层级(默认是ctrl+方向键),这对资料库管理是非常实用的。
c. 结论是 TxtBrowser适用于阅读txt;VOOF适用于管理txt资料库
  从实用选择角度,我认为这两款扩展面向的对象并不相同。TxtBrowser适用于阅读txt,尤其是他人的长文本;而VOOF适用于建立和管理自己的txt资料库,可以有很多节点,并不断调整其结构。

三、安装及使用笔记

重要说明:以下内容为xbeta试用当时的记录,有些地方不适用于后续版本TxtBrowser。比如,taglist插件出了修正版,.ctags文件不再需要……

  说明:编程人员对tag、ctags、taglist都很熟悉。但对于象我这样不编程的用户来说,因为TxtBrowser而第一次安装、使用这些东西,还是比较复杂的。记录如下,并提供对初学者友好地解释。

1. 安装ctags(http://ctags.sourceforge.net/
  ctags是一款程序(exe),用来生成tag文件。tag文件可以理解成索引——某个目录项、关键词……出现在哪个文件的哪一行。
  下载 Source and binary for Windows 98/NT/2000/XP,即 ctags58.zip。只需要把其中的 ctags.exe(约300KB)解压到 windows 目录(或其他在path的目录)。

2. 安装taglist(http://www.vim.org/scripts/script.php?script_id=273
  重要说明:由于官方taglist.vim对中文支持有问题,推荐修订版本
  把插件的内容复制到 vim安装目录/vimfiles/中。以我为例,新增如下内容:

d:\soft\Vim\vimfiles\plugin\taglist.vim
d:\soft\Vim\vimfiles\doc\taglist.txt

3. 安装TxtBrowser(http://www.vim.org/scripts/script.php?script_id=2899
  除了大部分内容复制到vimfiles目录,一定要注意 .ctags 文件要复制到 “$Home”目录。$home可以简单地理解为 c:\Documents and Settings\用户ID\。以我为例,新增如下内容:

d:\soft\Vim\vimfiles\plugin\txtbrowser.vim (生成目录、扩展功能所用的插件)
d:\soft\Vim\vimfiles\doc\txtbrowser.cnx (帮助文档)
d:\soft\Vim\vimfiles\doc\txtbrowser.txt (帮助文档)
d:\soft\Vim\vimfiles\syntax\txt.vim (语法高亮文件)
c:\Documents and Settings\zyx\.ctags (重要:定义文件文件中,哪些文本生成tag)

4. 在.vimrc文件里加入:

syntax on
let tlist_txt_settings = 'txt;c:content;f:figures;t:tables'
au BufRead,BufNewFile *.txt setlocal ft=txt

5. 重启vim,打开 http://www.rfc-editor.org/rfc/rfc959.txt ,执行命令 :Tlist,应该能看到效果了。

附:文章更新历史

  2010-03-25:更新txtbrowser与VOOF的比较部分;修正一些过时说法。
  2010-02-20:更新taglist中文路径问题。
  2010-02-16:初稿。

CreaWriter: 可用AutoHotkey模仿之

  电脑玩物 介绍CreaWriter 软件。价值是通过“全屏图片背景+背景音乐+半透明的编辑窗口”,来实现或专心致志、或激发灵感的高效写作。如果我需要类似功能,会如何做呢?请 AutoHotkey(介绍) 作大厨,以几款常用经典软件为主料,则 CreaWriter 的替代套餐出炉了。效果图及代码分别见下:
[image]

SetTitleMatchMode, 2
run "d:\music\we-are-the-champion.mp3"
run "d:\Program Files\pic\IrfanView\i_view32.exe" "d:\pic\费德勒2010澳网再夺冠.jpg" /fs
run d:\Program Files\vim\vim72\gvim.exe "d:\xbeta-test\note.txt"
WinWait, vim
winmove, vim,,300, 100, 800, 600
WinSet, Style, -0xC00000, vim
WinSet, Transparent, 190, vim

  赤尊信退回己阵,心内一阵犹豫,不知要选取那种武器。浪翻云的剑势可柔可刚,可拙可巧,已经超越了长剑的限制。
  赤尊信是以天下兵器为己用。浪翻云却以手中一剑尽天下兵器的变化。一个由博入简。一个由简达博。
  在无数次的战斗,赤尊信都能迅速决定选用最佳的兵器,但这次面对可怕的覆雨剑,他第一次犹豫起来。赤尊信心中忽然醒觉自己已经输了,浪翻云专心一意,以剑制敌。自己却要在选取武器上,三心两意,甚至还不知道应要选取什么武器,以致气散神弛。
  ——黄易 《翻云覆雨·第9章》

VIM教程与学习资料汇总(2010-02-19更新)

  汇总VIM的教程与学习资料,以方便初学者及持续学习者。欢迎补充。
Vim

一、官方文档

  网友happyvim说:“gvim的两份帮助写得非常好,vim的帮助不像tc的帮助—-跟垃圾差不多。相比之下,简直是一个在天上,一个在地下的区别。”

30分钟入门:
  首次安装vim后,可用 :help tutor 或 :help tutor@cn ,进入一个30分钟的vim入门教程。

Vim官方文档中文版安装包:
  Vim Documentation Chinese Version ,安装后使用 :help @cn 命令,就可以看到中文手册。

Vim用户手册中译7.2版pdf:
  作者:BramMoolenaar,翻译:ZhaoRuFei(slimzhao # hotmail)。链接

二、网友作品

大家来学Vim|李果正:
  台湾网友李果正编写的手册,PDF格式、80+页、800KB。链接

Vim 实用技术|IBM 吴咏炜
  共分3篇:实用技巧常用插件定制 Vim

神奇的VIM|IBM 闫石
  举了很多例子,尽显Vim之神奇。xbeta推荐阅读。链接

史上最强的vimrc文件|amix
  网上称为史上最强的vimrc文件,约800行,还是作者精简后的结果。评价:未必全用,但通读有益!
  另:国内网友改进版,更符合中文习惯。

史上最强的vim tips
  vim_tips.txt

vi/vim使用进阶|Easwy:
  写本系列文章的最初想法,是介绍如何用vi/vim开发软件。但纵观整个系列,讲述的其实和软件开发关系并不大,基本都在讲vim的使用技巧、vim的配置及vimrc、vim的命令和vim的插件。包括:序言(讲述我使用vi/vim的经历和心得,以及对vi/vim初学者的一些建议)、使用会话和viminfo、vimrc初步、保存项目相关配置、 使用标签(tag)文件、使用taglist插件、文件浏览和缓冲区浏览、lookupfile插件、开启文件类型检测、 乱花渐欲迷人眼 – 语法高亮、程序员的利器 – cscope、 剑不离手 – quickfix、智能补全、 自动补全、指随意动,移动如飞、在VIM中使用GDB调试 – 使用vimgdb、等十余篇内容,后续还有待完成的几篇。链接

Vim对程序员与普通人分别有什么用?
  实际是两篇文章。Dieken写过 程序员的编辑器——VIM 后,xbeta写了 普通人的编辑利器——Vim

edyfox使用Vim的总结
  也是水木社区Vim版高手。链接

vgod的使用经验
  用心绘制了Vim入门图解说明(如能改为浅色就更便于打印了),较直观地解释了Vim模式的概念、更多见 http://blog.vgod.tw/tag/vim/

其他网友收集的文档:
  neman (行胜于言)
  学用UNIX机读版.rar
  网友狂人收集的vim资料链接

三、善用佳软的Vim文章

  http://xbeta.info/tag/gvim
  另有部分文章,在sina blog及水木社区vim版,尚未整理。

附录:文章更新历史

  2010-01-27:全面更新。
  2006-04-24:初稿。>

试着开始 gVim 系列?(更新视频到更高清晰度)

gVim 比 Total Commander 更加复杂和有深度,而我在 gVim 方面也只是刚刚入门。所以,多次构思 vim 系列文章,有几次也写了不少内容,但极不满意,故未发表。
现在想到一个主意:通过与初学者互动,进行gVim推广。具体如下:
① 有意开始学习gVim的用户,请参照 普通人的编辑利器——Vim 及任意教程进行自学。
② 学习过程中,记录心得;遇到问题,自行搜索无法解决的,提出来。心得与问题可留言于此文后面。
③ 我会对这些心得/问题进行点评与回答。当然,也欢迎其他vim用户参与进来。
【善用佳软/2009-11-04:下面gVim安装视频更新成清晰版了。如果这个效果令人满意,以后将多录制视频教程。】

问:为什么 j k 移动一段而非一行?

  最近我决定开始学习你极力推荐的tc和vim。请教一下:为什么我的vim中j k键移动光标是一段一段的不是一行一行的呢?

回答:

  vim 是纯文本编辑器。而纯文本中,只有行,并没有段的概念。比如,写文件时手工换“行”(尽管用户的意思是分段);编辑器中设定显示“行”号。即:txt的行,就是你所说的段;而你所说的行,只是文字在窗口中显示后自动折回的效果。 autowrap 译为“自动换行”在一般情况下有助于理解,但在这种情况下,称为“自动折回”更能避免误解。
  既然txt中,“文本行”比“屏幕行”更重要,所以,编辑器中一般提到的“行”,就是“文本行”,也就是用户理解的“段”。
  所以,默认情况下,j k 的行移动,就是段移动。
  为了满足少数用户屏幕行的移动,vim提供了 gj gk 命令,来实现屏幕行的移动。
  如果有些用户,认为 gj gk太复杂,也可以自定义映射来修改为 j k。具体做法以后再讲。

问:学习 vim 有什么用?

  我只是觉得 vim 有意思,对自己并没什么用。

回答:

  对非编程人员,vim 的用处是和记事本是一样的。但是掌握了vim之后,就会发现txt的巨大威力与便利。我现在的工作记录、通讯录、常用ID和密码、资料管理,包括现在的博客写作,都在使用 vim。所以,尽管我并不推荐大家都学vim,但相信,普通用户既可以学会vim,也可以受益于vim。 参见视频:

  另外,我在软件应用的领悟上,有两个台阶,依次是 Total Commander 和 gVim。
>

vtano.ahk:GVIM+AHK实现顶层透明笔记本

有了超强的VIM,超强的Auto Hotkey,需要的只是用户的创造性了。本文介绍利用 AutoHotkey 让 gvim 窗口置于顶层、半透明、设定大小,以便于记录笔记。(参考文章:AutoHotkey入门教程:让重复工作一键完成普通人的编辑利器——VIM

截屏

  注意,上面的大窗口只是用来展示脚本在vim中的显示效果。左下角透明窗口才是这里所说的透明笔记本。
  GVIM+AHK实现顶层透明笔记本

相应脚本

  vtano.ahk 脚本及详细的注释如下。需要说明的是,脚本的代码颜色高亮也是用 Vim 的:TOhtml 功能导出的。

; 1. 基本信息
; 名称:vtano.ahk:GVIM+AHK实现顶层透明笔记本
; 作者:xbeta (善用佳软)
; 版本:v1.0 (2007-10-30)
; 网站:http://blog.sina.com.cn/xbeta
; 由来:经常在阅读文档时,希望有一个小巧的笔记工具,可以透明悬浮在顶层,随时键入文字,而不影响原来的阅读对象。由于我极喜欢GVIM,所以想到了用 Auto Hotkey设置GVIM置顶、透明的办法。当然,GVIM自身有一个VimTweak扩展,可实现类似功能。但VimTweak的透明是背景与文字整体 设定透明度,这样文字看起来不清晰。而AHK可以设定背景色完全透明(如果能设定透明度就更理想了),而文字正常显示,我认为这种效果更好一些。
; 适用对象:计算机上装有Auto Hotkey 和 GVIM,并且极其偏爱它们
; 2. 使用方法
; 将此文件放在加入path变量的目录(如系统目录)下,运行 vtano.ahk 即可
; 或任意放一位置,然后建立xx.lnk,运行 xx 即可
; 3. 说明
; ① 如果你不用AHK,也可以把此文档编译为exe
; ② 中间大段的send,也可以改写到vim脚本中
; ③ 如果想Gvim的标题栏也透明,只须让标题栏颜色(windows样式)、gvim背景色、ahk设定的窗口透明色三色相同。

SetTitleMatchMode, 2 ;设定ahk匹配窗口标题的模式
run d:\Program Files\gvim\vim71\gvim.exe ;启动gvim
winactivate, No Name ; 激活此窗口
sleep, 500 ; 延时,确保

send :hi clear Normal{enter} ;取消gvim的颜色
send :hi clear{enter} ;取消gvim的颜色
send :hi Normal guifg=red guibg=green{enter} ;设定为绿底红字
send :e c:\WINDOWS\Temp\vtano.text{enter} ;打开笔记文件,后缀为text是防止txt有其他语法加亮

sleep, 500
winmove, vtano.text,,50,50,300,150 ;设置窗口:大小、位置
winset AlwaysOnTop, ON, vtano.text ;设置窗口:置顶
WinSet, TransColor, 00FF00, vtano.text ;设置窗口:将绿色部分设为透明

附: 网友的 Fullscreen GVIM

  网友利用 AutoHotkey 制作了 全屏 gvim,原文见 此处。担心原网站停止维护,转载如下:

Fullscreen GVIM,03月 4th, 2008

我是在小众软件发现Q10这个软件的,用了过后很喜欢,但总觉得作为一个文本编辑器来说,Q10的功能弱了点,比如它似乎没有文本高亮,这样,如果我需要一个”专心致志代码编辑器”,它就无能为力了.

近日拜读了善用佳软的”GVIM+AHK实现顶层透明笔记本“一文,受此启发,加上我也是一个vim爱好者,心想何不用AHK+GVIM打造一个”专心致志编辑器”呢:-)
下面是我的实现, 供大家参考.

1. 设定GVIM,去掉menubar和toolbar
既然我们要打造的是一个”专心致志编辑器”,那么多余的东西一概不要,回复vim的本色.
编辑$VIMHOME\_vimrc文件,加入以下两行
set guioptions-=m “Remove menubar”
set guioptions-=T “Remove toolbar”
set guioptions-=r “Remove v_scroll bar”

2. 新建一个AHK脚本,例如gvimfull.ahk,输入以下内容后保存(PS,这个脚本是根据善用佳软的”GVIM+AHK实现顶层透明笔记本“的脚本改写的.)

SetTitleMatchMode, 2 ;设定ahk匹配窗口标题的模式
run c:\Program Files\vim\vim71\gvim.exe ;启动gvim
winactivate, No Name ; 激活此窗口
sleep, 500 ; 延时,确保
send :e d:\Notebook\txt\temp.txt{enter} ;打开一个临时的笔记文件
sleep, 500
winmove, temp.txt,,-1,-6,1408,1062 ;设置窗口:大小、位置, 这些数值需要根据使用者的屏幕分辨率调整,这是1400X1050分辨率屏幕的一个参考值

WinSet, Style, -0xC00000, temp.txt ;WS_CAPTION, 去掉title bar
WinSet, Style, 0×10000000, temp.txt ;WS_VISIBLE, 全屏模式

3. 双击gvimfull.ahk运行,下面是效果截图.

.

Full Screen GVIM – 修订版,03月 5th, 2008

今天抽空研究了一下AHK的帮助文档, 真是个好东东, 让我重新找回了在unix上工作的感觉.
花了点时间对昨天做的全屏GVIM的脚本做了一些改进,方便那些不懂AHK脚本的用户使用

– 用配置文件来设定GVIM路径,屏幕分辩率等
– 将以前用修改_vimrc来去除menubar, toobar的方式放到AHK脚本里来实现,这样你就不需要再修改vim的设定了
– 提供了一个编译后的exe文件.即使没有装AHK,也能实现全屏GVIM工作

点击这里下载源代码和配置文件 (为了表示对Q10和GVIM的尊重,我命名为G10^_^),解压缩后,修改 G10.conf配置文件
各个字段的含义如下(注意,请不要加入后面的中文注释)

GvimHome=C:\Program Files\vim\vim71\gvim.exe gvim的路径
X=-1 屏幕位置偏移量X
Y=-6 屏幕位置偏移量Y
ScreenWidth=1408 屏幕分辨率width
ScreenHeight=1062 屏幕分辨率height
AlwaysOnTop=0 1表示工作在Always On Top的模式(如果你要用金山词霸这样的软件,就设定为0,否则设定为1

修改完成后,点击Q10.exe或者Q10.ahk就可以执行啦

初稿:2007年10月;更新:2009-10-11

笔记: gVim同时处理中日韩文

gVim处理unicode时,如果设定不正确,可能会无法显示某些字符。
解决问题的关键,有2点:
一是编码环境,推荐:set enc=utf-8;
二是正确的字体,比如要正确显示韩文可选择GulimChe、DotumChe字体。

我的显示效果,如下图:(Win7、gVim 7.3、2012-11-16)
[img:gvim unicode]

更多说明

0.
多数情况下,我用gvim处理中文,因此,默认enc是prc而非utf-8。临时有需要往往改enc,相对不太关注fenc。[参见]

1.测试文本

日语(にほんご、にっぽんご)朝鲜语(조선어)或称韩国语(한국어)
代码 字符标准名称 显示
A 大写拉丁字母”A” A
ß 小写拉丁字母”Sharp S” ß
þ 小写拉丁字母”Thorn” þ
Δ 大写希腊字母”Delta” Δ
Й 大写斯拉夫字母”Short I” Й
ק 希伯来字母”Qof” ק
م 阿拉伯字母 “Meem” م
๗ 泰文数字 7 ๗
ቐ 埃塞俄比亚音节文字”Qha” ቐ
あ 日语平假名 “A” あ
ア 日语片假名 “A” ア
叶 简体汉字 “叶” 叶
葉 正体汉字 “葉” 葉
엽 韩国音节文字 “Yeob” 엽

2.
中文简体Win XP下,不设定encoding时,相当于cp936: simplified Chinese (Windows only),支持别名prc, chinese。也就是说,中文简体Win XP下,不设定enc与
se enc=prc
se enc=cp936
se enc=chinese
是等同的。

3.
此环境下,保存txt相当于notepad.exe的ansi。

4.
enc=prc下,处理unicode字符能力当然比较弱:默认开一个新文件复制韩文过来,它根本不认识;打开一个utf-8编码多语言的文件,也可能转换出错。

5.
所以,处理unicode字符时,一定要(临时)设为enc=utf-8

6.
直接切换到enc=utf-8,GVIM界面会显示乱码,韩文仍无法显示。前者是GVIM调用资源的问题,后者是当前字体不支持韩文(多数中文字体都支持日文)。
这时,虽显示异常,但不影响实际使用。比如,你仍可以复制/粘贴。

7.
如果看起来不舒服,则可以更改显示字体为韩文(代价是中文丑陋)。
se guifont=* 选择 GulimChe或DotumChe,字符集选韩文(不选似乎也可以)。

8.
曾有一段时间,我倾向于选择utf-8,让它成为gvim的enc、文本文件的保存格式、html的编码格式。
但这种“高”标准化对其他程序并不友好。比如:TC中ctrl+q或F3显示txt文件,进行文件内容比较。另外,对中文而言utf-8编码体积是原默认编码的1.5倍,如果是一篇长网页,差异还是难以忽视的。
因此,后来我又改回了ansi/gb-2312,除非遇到问题,才选择utf-8。

9.
对开发者或应用而言,应支持高标准;对用户或数据而言,采用低标准更为有利。此合于老子“知其雄,守其雌”之道。(完)>

[经典中的经典] 高效文本编辑的7个习惯 v2.0

[image:Vim]  如果你了解VIM或Emacs,《高效文本编辑的7个习惯》就是经典中的经典。否则,它什么也不是。
  VIM作者Bram Moolenaar在2000年发表了 7 habits of effective text editing,算是第一个版本。又于2007年2月在Google公司进行了演讲,称之为2.0版。

进行有效编辑的七种习惯, Bram Moolenaar

  如果你的很多时间是用来敲纯文本,写程序或HTML,那么有效地使用一个好的编辑器能节省你不少时间。这篇文章里的指导和提示将有助于你更快工作,更少犯错误。
  本文中采用开源文本编辑器Vim(Vi IMproved)说明有效编辑的思想,但这些思想也适用于其他编辑器。择合适的编辑器只是有效编辑的第一步,对于哪个编辑器更好的讨论将占很大地方,这里就不提了。如果你不知道该用哪个编辑器,或者对现在所使用的不太满意,不妨试试Vim;你是不会失望的。

第一部分:编辑一个文件 (edit a file)
  1. 快速定位 (Move around quickly)
  2. 不要敲两次 (Don’t type it twice)
  3. 知错就改 (Fix it when it’s wrong)
第二部分:编辑多个文件 (edit more files)
  4. 文件总是成帮结伙 (A file seldom comes alone)
  5. 让我们一起来工作 (Let’s work together)
  6. 文本结构化 (Text is structured)
第三部分:磨刀 (sharpen the saw)
  7. 养成习惯 (Make it a habit)

《高效文本编辑的7个习惯》相关链接:
  推荐:进行有效编辑的七种习惯:中文txt
  推荐:Seven habits of effective text editing:txt

其他链接:

>

VIM应用实例:用g制作目录或摘录

Vim的应用之妙,凭空举例是很难的。但只要有需求,就能在Vim处得到答案。

vim g 创建目录

比如这篇文章,[FAQ] TC常见问题解答,原来是没有前面的目录的。后来问题渐多,需要增加目录。目录怎么做呢?当然一行行复制粘贴是可以的,但这岂不是埋没了vim!只要一条命令:

:g/(\d{1,2})/t$

这样就生成了正序的目录(在文章最后)。

引申:逆序目录

:g/(\d{1,2})/t0

生成逆序的目录,位于文章开头。

引申:杨过语录

打开比如 神雕侠侣.txt,执行

:g/杨过说/m$

把杨过说的话整理在文章最后。

补充:—-的输入

另,文中的———–是如何输入的?
只需要:

72i-<esc>

就这么简单啊

引申:文章段落倒序

:g/^/m0

可以把整个文件的行顺序倒过来。而

:g/^/pu _ 

则可以在行间插入空行。

更多vim g用法

更多g的用法,参见 http://www.vim.org/tips/tip.php?tip_id=227
>