vim 其它高级功能

王朝other·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

(1)寄存器

VIM里面的寄存器可以用来保存拷贝的文本、记录的宏、设置的书签等等,一般的编辑器都只有一个剪切板(MS Office加入了多个剪切板),而VIM和Emacs编辑器中的多寄存器可以实现多个剪切板的功能。VIM中有九类寄存器:

无名寄存器 " 最近一次删除/修改/替换操作的文本都会放入这个寄存器

10个数字寄存器 0-9 拷贝或者删除的文本存入这些寄存器,这些寄存器是循环使用的,在每次存入内容到寄存器1时,原有的内容会依次存入到后一个寄存器中。

小删除寄存器 - 删除内容少于一行时放入这个寄存器。

26个命名寄存器 a-zA-Z 大小写无关。这些寄存器可以在拷贝或者删除等操作中指定使用。

四个只读寄存器 :.%# 特殊用途。

表达式寄存器 = 特殊用途。

选择和拖放寄存器 *+~ 用于与系统剪切板交互,以及接收拖放操作的内容。

黑洞寄存器 _ 放到这里面的内容都被丢弃,这样可以删除或拷贝时不影响其它寄存器。

最后一次搜索模式寄存器 / 保存最后一次搜索的正则表达式。

使用:reg命令可以看到所有寄存器中的内容,使用"+y或者"*y可以将visual mode下选择

的内容拷贝到系统剪切板,使用"+p或者"*p可以将剪切板中的内容粘贴到VIM中,如果打开了

mswin特性的话则在insert mode下使用Ctrl-x,Ctrl-v,Ctrl-c了。

Reference: :help registers

(2) 宏

Normal mode下按q<reg>,<reg>指{a-zA-Z0-9"}37个寄存器中的一个,然后可以进行任何操作,包括在模式间切 换,最后在Normal模式下按q可以结束宏录制,用@<reg>命令可以应用这个宏,命令前可以带数字前缀表示执行多少次这个宏。

Reference: :help q

(3) 书签

Normal mode下按m<reg>作书签,<reg>指26个命名寄存器中的一个,然后可以用'<reg>或者`<reg>跳到书签处。

Reference: :help m

(4) 映射

VI/VIM可以将某个按键序列映射到一个命令序列上,比如在配置文件.vimrc(Windows下是_vimrc)中写入

map <F6> <ESC>i<C-R>=strftime("%Y-%m-%d")<ESC><ESC>

即可以在Normal mode下插入当前日期。

Reference: :help :map

(5) 缩写

VI/VIM支持用一个缩写字符串代替一个长的字符串,比如

:ab hw hello world

然后在Insert mode下输入“hw ”(不包括引号)后VIM就自动替换成了“hello world”。这里展示一个Emacs下abbrev功能的动画(没错,是Emacs的):

http://www.bloomington.in.us/~brutt/msf-abbrev.html

http://www.bloomington.in.us/~brutt/msf-abbrev-demo.gif

Reference: :help :ab

(6) :s//和:g//,:!g//

这两个命名加上正则表达式,常常能完成非常复杂的编辑任务,可以毫不夸张地说是VIM的两柄瑞士军刀。:s是替换操作,:g是查找匹配模式的行,:!g是查找不匹配模式的行。

http://www.vim.org/tips/tip.php?tip_id=1063这个tip可以把:g找到的行拷贝到一个新的缓冲区中,非常有用。

Reference: :help :s

:help :g

(7) 插件

VIM自己有脚本语言,另外也支持用Perl/Python/Tcl/Ruby/Scheme编写插件,这些插件极大的丰富了VIM的功能。

(8) color scheme

VIM有许多配色方案,下面这个链接有许多配色方案效果的图样:http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/

(9) 二进制编辑

VIM可以利用xxd实现二进制编辑,不过这项功能还是不够好用。

(10) sign

sign指在编辑窗口的最左列显示一个标记,利用这个功能能实现很多IDE中的书签标记或者断点标记。

Reference: :help sign

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航