Chinaunix首页 | 论坛 | 博客
  • 博客访问: 93107
  • 博文数量: 15
  • 博客积分: 45
  • 博客等级: 民兵
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-08 16:28
文章分类

全部博文(15)

文章存档

2013年(15)

我的朋友

分类: LINUX

2013-05-16 11:16:37

虽然是总结自书中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) |
给主人留下些什么吧!~~