虽然是总结自书中vi编辑器介绍,不过本人用的是vim。据说vim很强大,还没有细究。
光标移动
o 在当前行下打开一个新行
O 在当前行上面打开一个新行
x 向右删除一个字符
X 向左删除一个字符
nl 向右移动n个字符(hjkl)
0或^ 光标移到行首
$ 光标移到行尾
'' 将光标返回到原来的位置
fx 在当前行中将光标移到下一个x(x指一个字符)
b 光标移到上一个单词的开头
w 光标移动到下一个单词的开头
e 光标移动到当前单词的词尾
nG 光标移到第n行的行首
移动和复制
对象 删除 修改/替换 接出
行 dd cc yy
行剩下的部分 D或d$ C或c$ y$
当前行从光标到第1个x字符 dfx cfx yfx
单词 dw cw yw
字符 x s(r?) yl
yG 拷贝全文
nyy (n=1,2,3……)
p
复制当前行开始的n行到指定位置
ndd (n=1,2,3……)
p
剪切当前行开始n行到指定位置
yw
p
将光标移到一个单词的开头,命令模式中输入yw复制单词,将光标移动到另两个单词之间的空格。输入p,粘贴。
dw
p
x
p
快速转移字符。 将当前位置的字符与右边的字符换位置
yfx
p
dfx
p
复制文本块
:2 copy (co)4 文件的第3行被复制到第4行的后面
:1,4 copy (co)7 第1~4行复制到第7行后面
注意:确保先输入小的行号。4,1 则不能解释
:10,14 co 0 10~14行复制到开头。
:10,14 co $ 10~14行复制到文件的最后一行的后面
:,14 co 16 当前行到14行 复制到 16行后面
移动文本块
copy 改为 move
添加、撤销和重复
添加文本
I 在行首添加文本
A 在行尾添加文本
撤销和重复操作
U 撤销对当前行的所有操作,前提是没有将光标移除当前行
*************
如果在命令模式下输入15,再按a进入编辑模式,输入test单词,回车,ESC退出,结果是,test被输入15次。
删除
4x 删除右边4个字符
3dd 删除光标所在行开始的3行
3dw 删除后面的3个单词
D 删除一行中光标右边的内容。
:5d 删除第五行
:4,9d 删除4-9行
:1,$d 清空文件
删除目标 命令
字符 x
单词 dw
行 dd
行中光标右侧部分 D
从光标到行中一个字符y dfy
所有内容 dG
替换
r
a
光标处的字符被替换成a。
cc 当前文本行被删除,光标位于行首,处于追加模式
C 当前行光标后面的内容被删除,进入追加模式
cfe 修改当前行光标到指定字符e间的所有文本。同dfe,删除当前行光标到字符e之间的文本
操作 字符 单词 行 行剩下部分 从光标到字符y之间的文本
删除 x dw dd D dfy
替换 s(r?) cw cc C cfy
全局修改:
:s/aaa/bbb/ 替换当前行的aaa, 加g,则替换当前行所有aaa
:1,$s/aaaa/bbbb/ 替换每一行的第一个aaaa,加g,替换所有行的所有aaaa
:g/betty/s/aaa/bbb/ 所有包含betty的行中搜索字符串aaa,替换为bbb
搜索行目标:
:g/aaa/s//bbb/ s后面没有指定替换目标,则为aaa
等同于 :1,$ s/aaa/bbb/
断开文本行r 和连接文本行 J
断开长文本行
1. 将光标移到一个长行中的两个单词之间的空格上,
2. 输入替换命令r,然后按回车键。
连接两行文本
1. 在文本中选择两个相邻的短文本行,并将光标放在第一行的任意位置。
2. 输入大写字母命令:J
两个文本将连接到一起。
保存文件,退出vi
保存原文件修改副本
vi practice
:w newfilename
修改practice文件,保存为 newfilename。
另存文本块
vi practice
:1,7 w practice-2
保存1,7行到practice-2文件
vi practice
:8,10 w>> practice-2
8~10行追加到practice-2文件
阅读(1525) | 评论(0) | 转发(0) |