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