学习vi编辑器 —— 快速移动

来源:互联网 发布:王者荣耀上分英雄知乎 编辑:程序博客网 时间:2024/06/16 12:41

2011-06-03 wcdj

 

(一) 按屏幕移动
(二) 按文本块移动
(三) 按搜索移动
(四) 按行号移动

 


(一) 按屏幕移动
(1) 滚动屏幕
“一屏”
Ctrl + F      向前滚动一屏
Ctrl + B      向后滚动一屏
“半屏”
Ctrl + D     向前滚动半屏(下)
Ctrl + U     向后滚动半屏(上)
“一行”
Ctrl + E      向上滚动一行
Ctrl + Y      向下滚动一行
注意:这两个命令并不把光标定位到行首,当调用这两个命令时,光标将保持在行中的原有位置。

(2) 使用z重新定位屏幕
z + Return      把当前行移动到屏幕顶部并滚动
z + .                 把当前行移动到屏幕中央并滚动
z + -                把当前行移动到屏幕底部并滚动

(3) 刷新屏幕
Ctrl + L      不用滚动也可以刷新屏幕

(4) 在屏幕内移动
H      移动到起始点 —— 屏幕首行
M     移动到屏幕的中间行
L       移动到屏幕的行末
nH    移动到屏幕首行下面的第n行
nL     移动到屏幕行末上面的第n行

(5) 按行移动
除了j(向下)和k(向上)移动光标,还有:
Return      移动到下一行的首字符
+                移动到下一行的首字符
-                 移动到前一行的首字符

(6) 在当前行内移动
除了h(向左)和l(向右)移动光标,0(行首)和$(行尾)移动光标,还有:
^            移动到当前行的第一个非空格的字符
n + |       移动到当前行的第n列


(二) 按文本块移动
另一种可以在vi文件中移动的方式则是按文本块(单词、句子、段落或节)移动。
除了:
w或W     按单词前移
b或B       按单词后移
还有:
e           移动到词尾
E           移动到词尾(忽略标点)
(            移动到当前句子的开始
)            移动到下一句子的开始
{            移动到当前段落的开始(下一段)
}            移动到当前段落的开始(上一段)
[[           移动到当前节的开始(下一节)
]]           移动到当前节的开始(上一节)

注意:可以把数字和移动命令结合在一起使用。例如:
3)      向前移动三个句子
d)      删除到当前句子结尾的文本
2y}    复制前面的两个段落

(三) 按搜索移动
搜索命令是专用字符 / (斜杠)。
当输入斜杠时,它将出现在屏幕的底行上,然后就可以输入想要搜索的模式。/pattern + Return
模式可以是整个单词或任意其他的字符序列(也称为“字符串”)。
vi 从光标处开始向前搜索,如果需要,可以把光标移动到文件的开始。光标将移动到模式第一次出现的位置,如果没有发现相匹配的文本,vi 就把“Pattern not found”信息显示在状态行上。

注意:/ (斜杠)是向前搜索,向后搜索使用 ? (问号)。

(1) 重复搜索
前面的搜索模式在整个编辑会话中都是可用的。完成一次搜索后,可以对上个模式使用再搜索命令,这样可以避免重复原来的击键。
n                        同向重复搜索
N                       反相重复搜索
/ + Return        向前重复搜索
? + Return        向后重复搜索

注意:vi 有一个“wrapscan”选项,它可以控制是否需要折回搜索。
:set nowrapscan        取消折回搜索
:set wrapscan             启用折回搜索

(2) 当前行内搜索
f 也有作用在当前行内的微型版的搜索命令。
fx        在行内搜索(移动光标到)x 的下一个实例,这里 x 代表任何字符
Fx       在行内搜索(移动光标到)x 的上一个实例
tx       在行内搜索(移动光标到)x 的下一个实例前面的字符
Tx      在行内搜索(移动光标到)x 的上一个实例后面的字符
;         同方向重复前面的搜索命令
,         反方向重复前面的搜索命令

注意:
(1) dfx 将删除到指定字符 x (包括 x)之间的文本,该命令常用来删除或复制行中的部分文本。因为,如果行内有符号或标点,统计单词就会变得很困难,那么可能需要使用 dfx 来代替 dw。
(2) t 命令除了把光标定位在搜索字符的前面之外,它的作用与 f 相同。例如,ct. 命令可以修改到句子结尾的所有文本,并保留句点。


(四) 按行号移动
文件中的行都被顺序地编号,因此可以通过指定行号在文件中移动。
:se nu         显示行号
:se nonu    不显示行号
由于编译程序的错误信息指定了行号,因此它对程序员来说非常有用。

注意:Ctrl + G 命令将行号等信息显示在屏幕底部(包括:当前行号、文件总行数和当前行在总行中的百分比)。

G(转移)命令
可以使用行号在文件中转移光标。G(转移)命令使用行号作为数字参数而直接移动到那行。例如:
12G     把光标移动到第12行的开始
不带行号的 G 命令把光标移动到文件的最后一样。

注意:两个反引号(``)和一对单引号('')
如果在这段时期没有进行编辑,那么输入两个反引号(``)可以使你返回到原来的位置(上次调用G命令的位置)。
如果已进行了编辑,然后使用了不同于G的命令移动过光标,那么 `` 将把光标返回到上次编辑的位置。
如果已经调用了搜索命令(/ 或 ?),则 `` 将把光标返回到开始进行搜索的位置。

一对单引号('')除了把光标返回到行首而不是光标以前所在的确切位置外,它与两个反引号(``)的作用很相似。

使用 Ctrl + G 显示的总行数可以提示你大致需要移动多少行。

按行号移动可以使你在大型文件中快速地从一个位置移动到另一个位置。

原创粉丝点击