VI是Linux/Unix下标配的一个纯字符界面的文本编辑器。由于不支持鼠标功能Q也没有囑Ş界面Q相关的操作都要通过键盘指o来完成,需要记忆大量命令。因此很多h不大喜欢它,但同时由于键盘的方式往往比鼠标来得快Q一旦熟l后用v来是有种非常畅的感觉的Q也有h因此而非常喜Ƣ它?/p>
不管你喜Ƣ也好,不喜Ƣ也好,VI是Linux的标配编辑器Q很多时候你也只有这一个编辑器可用Q如果要做一个Linux CoderQ熟悉VIq是非常有必要的?/p>
PSQ由于VI的命令非常多Q本文主要只介绍一些基命o。ƈ且就是q些基础命o中,也有许多是不大常用的Q我把q些命o以灰色文字显CZQ初学者可以不用太xq些灰色命o?/p>
两种工作模式
前面已经说过Q由于VI没有囑Ş界面Q如页、移动光标、保存、退出等操作都必d助键盘来完成。另外,VIq提供了大量快捷键来加速操作,因此QVIl的~辑模式下,q引入了一U新的工作模?#8212;—命o模式?/p>
PSQ有的文章中q列举了一ULast Line模式Q这个可以算作一U特D的命o模式Q只不过命o会显C在最后一行,q且需要敲回R才能执行。这些命令通常?:/?$ {特D字W开头?/p>
模式查询Q?/span>要判断当前处于U模式,可以通过最后一行(状态栏Q来判断Q如果处于编辑模式,则显CZؓ如下两种状态?/p> 模式间的切换Q?/span>在编辑模式下Q通过Esc键可以进入命令模式;命o模式下,执行某些插入命o后进入编辑模式。如果你不知道当前处于U模式下Q?span style="box-sizing: border-box; color: #70ad47;">按ESCq入命o模式Q?span style="box-sizing: border-box; color: #ed7d31;">按Insertq入~辑模式
启动VI
VI的启动参数有不少Q但通常的用方式如下:vi filename
如果参数中的文g存在Q则打开该文Ӟ如果参数中的文g不存在,则会新徏该文Ӟ不是立即创徏Q而是在保存的时候创建)?/p>
插入文本
刚进入VIӞ是出于命令模式的Q这是是无法输入文本的,因此需要进入插入模式。进入插入模式的命o有如下几个:
输入q几个命令后Q就q入了编辑模式,可以通过屏幕下方最后一行看到当前ؓ插入状态:
可以通过Insert键切换插入状态和改写状态(和图像界面中一P?/p>
另外Q在命o模式下,也可以通过Insert键进入编辑模式(插入状态)Q不q通常q是前面介绍的四个命令来q入~辑模式?/p>
d和保存文?/strong>
在VI中,d和保存文件对应的命o有这几个Q用前记得q入命o模式Q?
Ud光标
在VI中,Ud光标q不是我们游戏中常用的WASDQ而是h?/span>j?/span>k?/span>lQ分别控制光标左、下、上、右UM?/span>Q分别分布在x四个指头Q新手需要一D|间来适应。用非帔RJ,需要熟l掌握?/span>
其它一些光标控制命令如下:
另外Q还有几个行操作相关命o集中介绍一?/p>
删除文字
复制_脓
我个人ƈ不是很习惯VI提供的复制粘_׃没有高亮选中Q用h感觉不是很方ѝ^时大都是用的l端工具的复制粘贴功能,因此q里的命令我都加CQ感兴趣的可以看看?/p>
撤销和重?/strong>
撤销和重做在M~辑器里都是非常有用的命令:
查找和替?/strong>
查找和替换的语法W记复杂Q先单的介绍一下查扄语法Q?/p>
使用了查扑֑令之后,使用如下两个键快速查找:
至于替换的语法,限于幅所限,q里׃介绍了,l一个链接供大家参考一下:http://blog.csdn.net/lanxinju/article/details/5731843?/p>
VI对编E的支持
VI对编E还是提供了一定的支持的。例如,它是支持括号配对、语法高亮显C的?/p>
不过Q由于ƈ不支持语法解析功能,作ؓ~码工具和专业的代码~辑器如SourceInsight、VisualStudio{比hq是有很大差距的。个人感觉做型目和时修改代码用q行Q但做大型项目是有点力不从心的?/p>