(一)常用命令
学习提示:
① vi 命令较多,不要期望全部记住,个别命令忘记只会影响编辑速度
② 在使用 vi 命令时,关闭中文输入法 (因为在命令模式下输入命令,屏幕上没有显示)
1,移动光标(基本)
① 要熟练使用 vi ,首先应该学会如何在命令模式下快速移动光标(注意是在命令模式下)
② 编辑操作命令,能够和移动命令结合在一起使用
(1)上下左右
命令 | 功能 | 手指 |
h | 向左 | 食指 |
j | 向下 | 食指 |
k | 向上 | 中指 |
l | 向右 | 无名指 |
(2)行内移动
命令 | 英文 | 功能 |
w | word | 向后移动一个单词 |
b | back | 向前移动一个单词 |
数字0 | 行首 | |
^ | 行首,第一个不是空白字符的位置 | |
$ | 行尾 |
(3)行数移动
命令 | 英文 | 功能 |
gg | go | 文件顶部 |
G | go | 文件末尾 |
数字 gg | go | 移动到数字对应行数 |
数字 G | go | 移动到数字对应行数 |
:数字 | 移动到数字对应行数 |
(4)屏幕移动
命令 | 英文 | 功能 |
ctrl+b | back | 向上翻页 |
ctrl+f | forward | 向下翻页 |
H | Head | 屏幕顶部 |
M | Middle | 屏幕中间 |
L | Low | 屏幕底部 |
2,移动光标(程序员常用)
(1)段落移动
① vi 中使用 空行 来区分段落
② 在程序开发时,通常一段功能相关的代码会写在一起 -- 之间没有空行
命令 | 功能 |
{ | 上一段 |
} | 下一段 |
(2)括号切换
在程序中,()、[]、{} 使用频率较高 而且 都是成对出现
命令 | 功能 |
% | 在一对括号匹配的两个之间切换 |
(3)标记
① 在程序开发时,某一段代码可能需要稍后处理或完善,例如:编辑、查看
② 此时先使用 m 增加一个标记,可以在 需要时快速的跳转回来 或者 执行其他编辑操作
③ 标记名称可以是 a~z 或者 A~Z 之间的任意一个字母
④ 添加了标记的行如果被删除,标记同时被删除
⑤ 如果 在其他行添加了相同名称的标记,之前添加的标记也会被替换掉
命令 | 英文 | 作用 |
mx | mark | 添加标记x,x是a~z 或者 A~Z 之间的任意一个字母 |
'x | 直接定位到标记x所在位置 |
添加标记时,并不会在窗口显示标记,起到临时标记的作用
3,选中文本(可视模式)
① 学习复制命令前,应该先学会怎么选中要复制的代码
② 在 vi 中要选择文本,首先使用 visual 命令切换到可视模式
③ vi 中提供了三种可视模式,可以方便选择 选中文本的方式
④ 按 Esc 可以放弃选中,返回到命令模式
命令 | 模式 | 功能 |
v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
V | 可视行模式 | 选中光标经过的完整行 |
ctrl+v | 可视块模式 | 垂直方向选中文本 |
可视模式下,可以和 移动命令 连用,例如 ggVG 能够选中所有内容
4,撤销和恢复撤销
在学习编辑命令之前,先要指导怎么撤销之前一次 错误的 编辑动作
命令 | 英文 | 功能 |
u | undo | 撤销上次命令 |
ctrl+r | redo | 恢复撤销的命令 |
5,删除文本
命令 | 英文 | 功能 |
x | cut | 删除光标所在字符,或者选中文字 |
d(移动命令) | delete | 删除移动命令对应的内容 |
dd | delete | 删除光标所在行,可以ndd删除多行(n是数字) |
D | delete | 从光标位置删除至行尾 |
提示:如果使用 可视模式 已经选中了一段文本,那么无论使用 d 还是 x ,都可以删除选中文本
删除命令可以和 移动命令 连用,以下是常见组合:
6,复制和粘贴
vi 中提供有一个 被复制文本的缓冲区
① 复制 命令会将选中的文字保存在缓冲区
② 删除 命令删除的文字会被保存在缓冲区
③ 在需要的位置,使用 粘贴 命令可以将缓冲区的文字插入到光标所在位置
命令 | 英文 | 功能 |
y(移动命令) | copy | 复制 |
yy | copy | 复制一行,可以nyy复制多行(n是数字) |
p | paste | 粘贴 |
提示:
① 命令 d、x 类似于图形界面的 剪切操作--ctrl+x
② 命令 y 类似于图像界面的 复制操作--ctrl+c
③ 命令 p 类似于图形界面的 粘贴操作--ctrl+v
④ vi 中的文本缓冲区同样只有一个,如果后续做个复制,剪切操作,之前缓冲区的内容会被 替换
注意:
① vi 中的文本缓冲区和系统的剪贴板 不是同一个,所以在其他软件中使用 ctrl+c 复制的内 容,不能在 vi 中通过 p 命令粘贴,可以在编辑模式下使用鼠标右键粘贴(或ctrl+shift+v)
7,替换命令
命令 | 英文 | 功能 | 模式 |
r | replace | 替换当前光标字符 | 命令模式 |
R | replace | 连续替换当前光标的字符 | 替换模式 |
R 命令可以进入到 替换模式,替换完成后,按下 Esc 可以回到命令模式
替换命令 的作用是不用进入编辑模式,对文件进行轻量级的修改
8,缩排和重复执行
命令 | 功能 |
>> | 向右增加缩进 |
<< | 向左减少缩进 |
. | 重复上次命令 |
缩排命令 在开发程序时,统一增加代码的缩进比较有用
① 一次性 在选中代码前增加4个空格,就叫做 增加缩进
② 一次性 在选中代码前删除4个空格,就叫做 减少缩进
上表中给出的是在命令模式下的缩排命令用 >> 或 <<
在可视模式下,缩排命令只需要使用一个 > 或 <
在程序中,缩进通常用来表示代码的归属关系
前面的空格越少,代码的级别越高
前面的空格越多,代码的级别越低
9,查找
常规查找:
命令 | 功能 |
/str | 查找str |
查找到指定内容后,使用 Next 查找下一个出现的位置
n : 查找下一个
N: 查找上一个
如果不想看到高亮显示,可以随便查找一个文件不存在的内容即可
单词快速匹配:
命令 | 功能 |
* | 向后查找当前光标所在单词 |
# | 向前查找当前光标所在单词 |
在开发中,通过单词快速匹配,可以快速看到该单词在其他什么位置使用过
10,查找并替换
在 vi 中,查找和替换命令需要在 末行模式 下执行
记忆命令格式::%s///g
(1)全局替换
一次性替换文件中的 所有出现的旧文本
命令格式::%s/旧文本/新文本/g
(2)可视区域替换
先选中要替换文字的范围
命令格式: :s/旧文本/新文本/g
详细解释:将可视区域的旧文本替换成新文本,没有选中的区域则将旧文本高亮显示
注意:可视区域替换命令中 没有%
(3)确认替换
如果把末尾的 g 改成 gc ,则在替换的时候会有提示!推荐使用
命令格式: :%s/旧文本/新文本/gc
出现的字母选项:
y | yes替换 |
n | no不替换 |
a | all替换所有 |
q | quit退出替换 |
l | last替换最后一个,并把光标移到行首 |
ctrl+E | 向下滚屏 |
ctrl+Y | 向上滚屏 |
11,插入命令
在 vi 中,除了常用的 i 进入编辑模式外,还提供以下命令进入编辑模式
命令 | 英文 | 功能 | 常用 |
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本 | 较常用 |
o | 在当前行后面插入一空行 | 常用 | |
O | 在当前行前面插入一空行 | 常用 |
其中o、O 是英文字母
编辑命令和数字的演练:
在开发中,可能会遇到 连续输入N个同样的字符
在python中有简单的方法,但是其它语言中通常需要自己输入
提示:正常开发时,在 进入编辑模式之前,不要按数字
利用可视块给多行代码增加注释:
在开发中,可能会遇到一次性给多行代码 增加注释 的情况
在 python 中,要给代码增加注释,可以在代码前增加一个 #
在可视块模式下,只能用 I 进入编辑模式在行首插入文本, i 不能在可视块模式下进入编辑模式