首页 > 代码库 > Vi Editor ---how to user it

Vi Editor ---how to user it

只有熟练的使用才能熟练的掌握Vi。

在网页中快速查询,输入ctrl+F。具体实践中,不清楚的地方请自己尝试


1 Vi的两个模式

Vi 分为命令模式和插入模式。命令模式用于输入命令,来进行移动光标等操作;插入模式就是用来输入文本的。

刚进入vi是命令模式,按i键可以进入插入模式,按Esc键可以进入命令模式。


2.打开和关闭文件

命令行输入vi filename,如果存在filename文件,则直接打开,否则新建一个名为filename的文件。不加filename则创建一个未命名的缓冲区。

编辑完成后,进入命令模式,输入:wq或者直接按ZZ保存和退出,输入:w只保存不退出,输入:q!只退出不保存。

输入:e!表示取消所有的编辑结果,回到原来的文件。


3.vi选项的配置:

:set wm=10,表示设置与右边界的距离为10,便于在编辑时自动进行换行

:set nu,表示显示行号

:set foldmethod=syntax,设置折叠方式

:set cindent,自动缩进

:syntax on,打开语法设置


3. 移动光标

3.1  hjkl分别表示左上下右,按照键盘上的位置记忆,最左边的往左,最右边的往右,中间的表示左上右下

3.2   0(零)和$表示移动到行头和行尾,可以认为0表示每行的第0个元素,$表示最后一个元素

3.3  w命令(word)表示光标向后移动一个单词,符号和标点也算是一个单词。如果使用W命令表示不算符号和标点移动到下一个单词。

b命令(back)表示向前移动一个单词,同理B命令表示不算标点符号向前移动一个单词。

使用G命令可以移动到特定的行(结合行号来看),只输入G移动到文件结尾,1G移动到第一行,42G移动到42行。

3.4 移动时可以加入数字,例如2w表示向后移动2个单词,5B表示向前不算标点符号移动5个单词。2k表示向上移动两行。


4.vi命令

4.1 命令i 和a 都表示插入文本,不过i表示在光标前面插入,a表示在光标后面插入

4.2 c命令(change)可以跟移动光标命令结合,表示有多少文本需要修改。例如cw表示要修改一个单词,c2b表示要修改之前的两个单词,c$表示要修改当前位置到结尾位置。

键入cw命令后,要被更改的单词结尾会出现$符号,修改完成后输入ESC回到命令模式即可。

cc命令表示直接修改一行,使用cc命令,原来的文本会消失,留下一行空白以供插入。而使用cw命令,原来的文本会逐渐覆盖,直到输入ESC才消失。

4.3  r命令(replace),表示替换一个字符,结束后不用输入ESC。s命令会替换一个字符,S命令则会替换一行。

4.4   命令~(键盘左上角),会将当前光标内容大写变小写,小写变大写。

4.5   d命令(delete),删除命令。dw删除一个单词,同时会删除下一个单词之前的空白。要想留下空白,使用de。使用dE则删除范围到包括标点在内的单词结尾。db向前删除,d$删除直到结尾,d0删除直到开头。2dd删除两行。D等价于d$。

4.6  x命令删除当前光标的字符,X命令删除当前光标之前的字符。5x删除5个字符,依次类推。如果想回复删除的内容,可以使用u命令(撤销)或者p命令。

4.7 p命令,放置命令、采用删除在放置的方式可以实现移动文本。先删除一个文本块,文本会存储到特殊的缓冲区中,在按p命令放置到当前光标的下一行或当前行。

4.8 y命令,拖拽文本。例如先使用yy将一行拖拽到特殊缓冲区中,然后输入p将文本放置到光标的上一行。拖拽命令和删除命令共用缓冲区,每次操作都会覆盖原来的内容,类似于windows的剪切板。

4.9 重复之前的命令,移动光标,输入.(句号)即可。

4.10 J(大写)命令,将当前行和下一行合并为一行。

4.11 u(小写)命令,撤销之前的一个操作。


5 快速移动命令

5.1 CTRL+F向前滚动一整屏,CTRL+B向后滚动一整屏,CTRL+D向下滚动半屏,CTRL+U向下滚动半屏。

5.2 H移动到屏幕顶端的行,M移动到中间的行,L移动带底端的行

5.3  e移动到单词结尾,E移动到单词的结尾(忽略标点符号),(左括号移动到句子开头,)右括号移动到下个句子的开头。


6.注意

一般的命令形式是(命令 ,数字,文本块)后者(数字,命令,文本块),其中数字和命令式可选的,如果没有这两部分,只是单纯的移动命令。加上数字则是移动多次。加上命令(如c/d/y等待)则会得到编辑命令。vi编辑器的底层封装的是ex,大部分的ex命令在vi中也可以使用。