原文地址:Vim实战指南(六):环境偏好配置
Introduction
有没有想过让你的vi环境与众不同?vi可以将你的环境偏好配置保存下来,甚至支持配置脚本,自定义快捷键,和Unix命令行交互,这些便利将进一步提高你的编辑速度。
环境配置
vi使用ex命令进行环境配置,在前面你已经使用过:set nu来添加行号。
在vi中,环境配置分为两类:开关型和值类型,如:
:set nu:开关型,打开行号
:set nonu:开关型,关闭行号,前面加no表示关闭
:set shell=/bin/bash:值类型,将shell解析器设置为/bin/bash
你可以通过下面的ex命令,看到你的vi支持的所有配置:
:set all
保存环境配置
在vi中进行的环境配置,通常在退出vi后会失效。vi启动时会读取.exrc文件,因此可以将你的自定义配置保存在.exrc文件中。
在你的当前用户下(Unix的~目录),打开或新建.exrc文件:
$ vi ~/.exrc
在打开的文件中,输入:
set nu
这样会使你用vi打开文件时,自动增加行号。
注意,vi启动时会自动读取当前用户的.exrc文件进行解析,因此不需要在命令前面加:(:的意思是使用ex解析器)。
vi允许使用不同的.exrc文件,要打开此功能,首先打开刚才的~/.exrc文件,输入:
set exrc
然后我们在当前路径下新建一个.exrc文件,在里面输入:
set nonu
现在,每次使用vi打开文件时,会首先读取当前路径下的.exrc文件,因此我们在当前路径下使用vi打开的文件,不再带有行号。
执行Unix命令
vi的ex命令同样可以使用Unix命令行工具,这样省去你退出vi输入命令后再重新打开vi的尴尬。
在vi中,输入:!来执行命令行工具,如:
:!ls
将列出当前目录下的所有文件。
你甚至可以使用:
:!sh
来打开一个新的解析器,这样就省去了通过ex一行一行输入命令的时间,你可以在使用完sh后,通过Ctrl+D回到vi。
使用Unix命令辅助编辑
如果你需要对当前文件进行排序怎么办?强大的ex完全支持:
:3,6!sort:对3到6行使用Unix的sort工具进行排序
你甚至可以不使用ex,而采用vi的命令行来实现:
3!!sort:将光标及后3行使用Unix的sort工具进行排序
快捷键
编程的时候,有些频率很高的词,你希望能少敲几个字符,如function(),我们可以使用下面的ex命令:
:ab fu function()
这样当你在编辑模式输入fu的时候(注意只是fu,func不行),vi会自动转义为function(),和代码自动补全相比,有没有似曾相识的感觉?
你同样可以将快捷键保存到.exrc文件中。
除了编辑模式,vi也支持命令行模式的快捷键,你可以将一些常用的组合命令保存为快捷键:
:map T dwelp
当你在命令行模式中输入T时,将交换当前单词和后面的单词的顺序,为什么?因为:
dw:删除当前单词
e:移动当下一个单词的末尾
l:向右移动
p:将刚才删除的单词放置在此处
是不是有一种恍然大悟的感觉?你可以通过这种方式,创建更多巧妙的快捷键。
Summary
本文介绍了vi中的环境偏好设置,通过强大的命令行以及快捷键工具,自定义你的vi环境,能让你节省大量的开发时间!