《学习vi编辑器》的学习笔记2
第二章 简单编辑
vi命令
按下i过后在光标处进入插入模式,跟stl的insert一样,输入时在光标指向字符之前插入一个字符,当按下esc时光标会会退到最后一个输入的字符之上
移动光标
h 左移一格(仅能在一行内游走)
j 下移一行
k 上移一行
l 右移一格(仅能在一行内游走)
10l 右移10格
行的长度不一定与屏幕可见长度一致,因此会出现看起来很多行,实际上只有一行的显示情况
此时就可以使用:set wm=10或者:set wrapmargin=10将换行边界设置为10个字符(但是似乎没有用,以后再说了)
0(零) 移动到行首
$ 移动到行尾
:set nu 为每一行标注行号
w 向前移动到单词交界处
W 向前移动到下一个文本开始处
e 单词的尾部
E 可见字符串的尾部
b 向后
B 向后
插入新文本 i
追加文本
a 按下a键进入插入模式时,光标会立即向右移动一格空格
修改文本 c
cw 修改一个单词
cc 修改一行
C和c$一样,修改从当前光标位置到行尾的所有字符
r 利用一个单个字符替换另一个单个字符,编辑完成后立即返回命令模式,例如输入rb就把当前光标处的字母替换成为b然后回到命令模式
替换文本
vi命令的一般模式
(命令)(文本目标) 文本目标是移动命令
(命令)(数字)(文本目标)或(数字) (命令) (文本目标),例如c2w 2cw
s 只替换一个字符,可以使用计数来删除该行多个字符,例如4s
S 替换光标所在的当前行,支持数字前缀
R 进入到改写模式,输入的字符将逐个替换文本,直到输入esc为止,只能改写当前行
~ 可以对该行(逐个字符)进行字母大小写替换,支持数字前缀
删除文本 d
与c命令类似,有:
dw 删除光标指示处开始的单词
dd
D和d$一样,删到行末为止
删除字符 x 与r类似,不过不进行替换操作X则是向前删
粘贴命令 p 将最近一次删除的对象粘贴到光标后面,如果删除的是行,就在光标的下一行,P为光标的前面
复制文本 y
yw y$ 4yy Y(Y比较特别,是yy,删除整行)
重复命令 .(句点)
撤销命令
u 撤销上次的操作
U 撤销上次一行的操作
插入文本的常用方法
A 在当前行的尾部添加文本
I 在行首插入文本
o 在光标所在行的下面新建一行,等待输入文本
O 在光标所在行的上面新建一行,等待输入文本
插入命令的数字参数
除了o和O以外,插入命令(加上i和a)都可以带有数字前缀.例如50i*ESC可以插入50个星号2r&也可以将光标处开始的两个字符替换成为&
使用J合并两行,同样可以带数字参数
回顾vi命令
编辑命令
文本目标 |
修改 |
删除 |
复制 |
1个单词 |
cw |
dw |
yw |
2个单词,不计标点 |
2cw或c2w |
2dw或d2w |
2yw或y2w |
向后三个单词 |
3cb或c3b |
3db或d3b |
3yb或y3b |
一行 |
cc |
dd |
yy或Y |
到行尾 |
c$或C |
d$或D |
y$ |
到行首 |
c0 |
d0 |
y0 |
单个字符 |
r |
x或X |
yl或yh(L或者H) |
5个字符 |
5r |
5x |
5yl(L,H就不行了) |
移动命令
移动 |
命令 |
←,↓,↑,→ |
h,j,k,l |
到下一行的首字母 |
+ |
到上一行的首字母 |
- |
到单词的尾部 |
e或E(大写的不仅仅是字母,还包含标点) |
按单词前移 |
b或B |
按单词后移 |
w或W |
到行尾 |
$ |
到行首 |
0 |
其他操作
操作 |
命令 |
从缓冲区输出文本 |
p或P(一前一后) |
启动vi,如果指定了文件,就打开该文件 |
vi filename |
保存编辑、退出文件 |
:wq |
不保存编辑、退出文件 |
:q! |
文本创建和操作命令
编辑行为 |
命令 |
在当前位置插入文本 |
i |
在行首插入文本 |
I |
在当前位置追加文本 |
a |
在行尾追加文本 |
A |
在光标所在行的下面新建一行,等待输入新文本 |
o |
在光标所在行的上面新建一行,等待输入新文本 |
O |
删除行并替换文本 |
S |
使用新文本覆盖现有文本 |
R |
合并当前行和下一行 |
J |
转换大小写 |
~ |
重复上次操作 |
. |
取消上次修改 |
u |
恢复行到初始状态 |
U |