《学习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 修改一

Cc$一样,修改从当前光标位置到行尾的所有字符

r 利用一个单个字符替换另一个单个字符,编辑完成后立即返回命令模式,例如输入rb就把当前光标处的字母替换成为b然后回到命令模式

替换文本

vi命令的一般模式

(命令)(文本目标)    文本目标是移动命令

(命令)(数字)(文本目标)(数字) (命令) (文本目标),例如c2w 2cw

s 只替换一个字符,可以使用计数来删除该行多个字符,例如4s

S 替换光标所在的当前行,支持数字前缀

R 进入到改写模式,输入的字符将逐个替换文本,直到输入esc为止,只能改写当前行

~ 可以对该行(逐个字符)进行字母大小写替换,支持数字前缀

删除文本 d

与c命令类似,有:

dw 删除光标指示处开始的单词

dd

Dd$一样,删到行末为止

删除字符 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个单词,不计标点

2cwc2w

2dwd2w

2ywy2w

向后三个单词

3cbc3b

3dbd3b

3yby3b

一行

cc

dd

yyY

到行尾

c$C

d$D

y$

到行首

c0

d0

y0

单个字符

r

xX

ylyh(L或者H)

5个字符

5r

5x

5yl(L,H就不行了)

移动命令

移动

命令

,,,

h,j,k,l

到下一行的首字母

+

到上一行的首字母

-

到单词的尾部

eE(大写的不仅仅是字母,还包含标点)

按单词前移

bB

按单词后移

wW

到行尾

$

到行首

0

其他操作

操作

命令

从缓冲区输出文本

pP(一前一后)

启动vi,如果指定了文件,就打开该文件

vi filename

保存编辑、退出文件

:wq

不保存编辑、退出文件

:q!

文本创建和操作命令

编辑行为

命令

在当前位置插入文本

i

在行首插入文本

I

在当前位置追加文本

a

在行尾追加文本

A

在光标所在行的下面新建一行,等待输入新文本

o

在光标所在行的上面新建一行,等待输入新文本

O

删除行并替换文本

S

使用新文本覆盖现有文本

R

合并当前行和下一行

J

转换大小写

~

重复上次操作

.

取消上次修改

u

恢复行到初始状态

U

posted on 2011-10-16 23:41  Observer  阅读(321)  评论(0编辑  收藏  举报

导航