vi 快速移动光标
文章来源:http://blog.csdn.net/xiongzhengxiang/article/details/7546473
movement by screens
ctrl + F - 向前滚动一屏,光标移动到下一屏的第一行
ctrl + B - 向后滚动一屏,光标移动到上一屏的最后一行
ctrl + D - 向前滚动半屏,光标移动到屏幕中间一行
ctrl + U - 向后滚动半屏,光标移动到屏幕中间一行
ctrl + E - 向前滚动一行,光标位置保持不变
ctrl + Y - 向后滚动一行,光标位置保持不变
如果想滚动屏幕但却不希望移动光标的位置,可以使用 z 命令。
zENTER - 滚动屏幕使光标所在行移动到屏幕第一行
z.(点号) - 滚动屏幕使光标所在行移动到屏幕中间
z-(减号) - 滚动屏幕使光标所在行移动到屏幕最后一行
在 z 命令前添加 n 前缀表示把第 n 行移动到屏幕的相应位置,如 200zENTER 表示把第 200 行移动到屏幕第一行。
有时系统中会出现一些系统消息影响你的编辑工作,这时使用命令 ctrl + L 可以使 vi 刷新屏幕。
H - 光标移动到当前屏的第一行
M - 光标移动到当前屏的中间一行
L - 光标移动到当前屏的最后一行
nH - 光标移动到当前屏从第一行开始向下的第 n 行
nL - 光标移动到当前屏从最后一行开始向上的第 n 行
ENTER、+ - 光标移动到下一行的第一个字符
-(减号) - 光标移动到上一行的第一个字符
上面三个命令把光标移动到一行中第一个不是空白或 tab 字符的位置。
^ - 光标移动到行内第一个非空白的字符处
0 - 光标移动到行内的第一个字符处,包括空白
n| - 光标移动到当前行的第 n 个字符处
movement by text blocks
e - 光标移动到单词末尾
E - 光标移动到单词末尾,忽略标点
( - 光标移动到当前句的开头
) - 光标移动到下一句的开头
{- 光标移动到当前段落的开头
} - 光标移动到下一段落的开头
[[ -光标 移动到当前 section 的开头
]] -光标 移动到下一 section 的开头
寻找句子的结尾,vi 查找标点:? , . !。有两种情况 vi 认为是句子的结尾,上述标点后面紧跟两个以上的空格,或是一行的最后一个非空白字符为上述标点中的一个。
movement by searchs
/pattern - 从光标所在位置开始,向文件的结尾搜索 pattern,如果能够搜索到,光标会移动到 pattern 的第一个字符处
?pattern - 从光标所在位置开始,向文件的开头搜索 pattern,如果能够搜索到,光标会移动到 pattern 的第一个字符处
n - 在同一个方向搜索下一个匹配的 pattern
N - 在相反的方向搜索下一个匹配的 pattern
/ENTER - 效果同命令 n
?ENTER - 效果同命令 N
set 选项 wrapscan 设置是否循环搜索。如果开启 wrapscan 选项,当搜索到最后一个 pattern 后则会从文件的开头或结尾继续搜索,如果关闭 wrapscan 选项,搜索到最后一个 pattern 后会显示一个错误消息。
行内搜索
下面这些命令仅在当前行执行搜索,不会把光标移动到其他行。( 以下命令中的 x 可以为任何字符 )
fx - 从光标所在处向后查找字符 x,并把光标移动到字符 x 上
Fx - 从光标所在处向前查找字符 x,并把光标移动到字符 x 上
tx - 从光标所在处向后查找字符 x,并把光标移动到 x 前一个字符上
Tx - 从光标开始处向前查找字符 x,并把光标移动到 x 后一个字符上
; - 在同一个方向重复执行前一个行内搜索命令
, - 在相反方向重复执行前一个行内搜索命令
:set nu 显示行号,:set nonu 不显示行号。命令 ctrl + G 会使 vi 在屏幕的最下方显示如下信息:当前行号,文件的行数,当前显示的行数占文件总行数的百分比。
``(反引号) - 光标移回上一次光标移动之前光标所在的位置。如果执行了一些编辑后使用 G 命令移动光标,那么 `` 会把光标移回执行编辑的位置;如果刚执行过搜索,`` 则会把光标移回开始搜索时光标所在位置。
''(两个单引号) - 光标移回上一次光标移动之前光标所在行的第一个字符处