我们可以用w命令向前移动一个单词,用b命令向后移动一个单词。我们也可以用数字做前缀组成新的命令,来快速的移动。例如4w就是向前移动4个单词,而5b则是向后移动5个单词。
利用$命令可以使光标移到一行的结尾处,而^命令可以使光标移到一行的开始处。
使用G命令可以移动到指定的行。例如3G可以使我们快速的移到第3行。而1G则可以使我们移到文章的最顶端,而G则是定位到文章的最后一行。
那么又如何知道现在第几行呢?我们可以使用:set number命令使vi显示行号;而取消行号的命令为:set nonumber。即使没有显示行号,也可以使用ctrl+G命令显示总共有多少行,而当前在多少行,以及所占的百分比等信息。
使用J命令可以将本行和下一行合并为一行。我们也可以使用数字来使几行合并为一行。例如3J就可以将当前行下的三行(包括当前行)合并为一行。
除了在行间移动,我们还可以使用ctrl+U和ctrl+D命令进行向上和向下翻页,以快速移动到文章的不同部分。
我们可以使用dd来删除一行,使用dw来删除一个词。我们可以灵活组合命令来完成不同的删除操作。例如d3w一次删除3个词,而3dw则是指一次删除一个词,而这样的操作进行3次,即总的是也是删掉3个字符。命令d$则是删除从当前位置到本行结束的所有字符,命令D也能完成同样的工作。
与d命令相类似是的c更改命令,他在删除一个字符的同时进入插入状态。cw命令删除一个单词并进入插入状态。cc命令删除本行上的所有内容并进入插入状态,而且还会保持当前的行缩进。命令c$将删除从光标处到行尾的所有内容并进入插入状态。
命令s相当于命令cl的简写,它将删除光标右侧的一个字符并进入插入状态。而命令S相当于命令cc的简写,它将删除一行并进入插入状态。
我们可以使用r的命令来替换文本。例如rx就可以当前光标下的字符替换为x。当然也可以用数字来组合以形成新的命令来进行工作,例如5rd就是将当前光标以后的5个字符替换为d。
我们还可以用~命令进行大小写转换。
命令.可以重复执行刚才执行的命令,大提高操作的速度。
利用vi中的键盘宏,可以使我们实现多个命令的记录和执行。例如我们现在的文本是 stdio.h stdlib.h math.h 但是我们都知道在C语言中所需要的是 #include #include #include ,如何来做到?如果你有足够的耐心可以一句一句的加,但是也可以使用键盘宏来高效地完成这项工作。开始输入qa.其中的a是一个宏的名字,我们可以用任何我们喜欢的字母来代替,q是开始录制宏的命令标志。这样我们就可以开始宏的输入了:^移到一行的开始;在一行的开始插入#include;在结束处加入>;j移到下一行,q结束宏的录制。
当我们要使用宏时,就可以输入@a命令来执行宏了。我们还可以在执行命令前加上数字来告诉vi执行几次。这样就可以快速的完成工作了。
w | 向前移动一个单词 |
b | 向后移动一个单词 |
$ | 移动到一行的结尾 |
^ | 移动到一行的开始 |
G | 移动到指定行 |
:set number | 显示行号 |
:set nonumber | 不显示行号 |
dd | 删除一行 |
dw | 删除一个单词 |
d$ | 删除从当前位置到本行结束的所有字符 |
D | |
s | 删除光标右侧的一个字符并进入插入状态 |
S | 删除一行并进入插入状态 |
cc | |
cw | 删除一个单词并进入插入状态 |
c$ | 删除从当前位置到本行结束的所有字符并进入插入状态 |
C | |
. | 重复执行刚才执行的命令 |
J | 将本行和下一行合并 |
r | 替换当前字符 |
~ | 转换大小写 |
q | 录制宏 |
@ | 执行宏 |