1、复制
①单行复制
ESC进入命令模式,将光标移动到要复制的行,“yy”进行复制;
②多行复制
ESC进入命令模式,将光标移动到要复制的行的第一行,按“nyy”复制 n行;其中n为1、2、3……
2、粘贴
ESC进入命令模式,将光标移动到将要粘贴的行处,按“o”另起一行,相当于Tab键,然后按“p”进行粘贴
3、删除
①快速删除当前行:
ESC进入命令模式:光标移动到某行上,命令:dd 删除当前行。
②多行删除:
ESC进入命令模式:set nu,显示行号;输入命令 :10,20d 代表删除第10-20行。
③另外
x 删除当前光标下的字符
dw 删除光标之后的单词剩余部分。
d$ 删除光标之后的该行剩余部分。
4、撤销操作
按“u” 撤销上一步的操作 (等同于windows中 Ctrl+Z)
按“Ctrl+r” 恢复上一步被撤销的操作
5、/ ? 查找命令
/word 向下查找word字符串
?word向上查找word字符串
组合查找
n: 代表重复前一个查找的操作
N:反向进行前一个查找操作
6、s/old/new/g替换命令
行间查找
在第n1和n2行查找word1并替换为word2
:n1,n2s/word1/word2/g
举例: :100,200s/vbird/VBIRD/g
全文查找并替换
:1,
s
/
w
o
r
d
1
/
w
o
r
d
2
/
g
从
第
一
行
到
最
后
一
行
查
找
字
符
串
w
o
r
d
1
字
符
串
,
并
将
字
符
串
w
o
r
d
1
替
换
为
w
o
r
d
2
用
户
确
认
替
换
提
示
:
1
,
s/word1/word2/g 从第一行到最后一行查找字符串word1字符串,并将字符串word1替换为word2 用户确认替换提示 :1,
s/word1/word2/g从第一行到最后一行查找字符串word1字符串,并将字符串word1替换为word2用户确认替换提示:1,s/word1/word2/gc
从第一行到最后一行查找字符串word1,并将字符串word1替换为word2,在替换之前提示用户确认是否替换
7、多文件编辑
使用vim编辑多个文件
进入vim前有多个参数,vim 1.txt 2.txt=>这是默认进入1.txt
命令模式:n跳转进入2.txt :n!=>强制转换不保存
进入vim后,打开新文件
命令行模式下:
命令 说明
:e 3.txt 打开新文件3.txt
:e! 4.txt 新打开4.txt,放弃正在编写的文件
:e# 打开前一个文件
:ls 列出以前编辑过的文档
:b 2.txt 直接进入2.txt
:bd 2.txt 删除以前编辑过的列表中的文件项目
:f 显示正在编辑的文件名
:f new.txt 将当前的文件名改为new.txt
8、另存为
首先需要按ESC键回到命令模式;
然后输入命令:w fileName,文件不存在会自动新建文件。
用法示例:
另存为文件为temp.cpp
:w /home/youname/temp.cpp
文件就会默认保存在当前工作路径。
注意:要确保你的文件路径是存在的,否则是保存不成功的
1 删除命令
2 常用的删除组合命令
说明:操作符命令+位移命令
1 nx 删除多个字符(n为删除的字符个数)
2 dw 删除1个单词
3 d10w 删除10个单词
4 d10W 删除10个单词,忽略标点符号。
5 db 向后删除一个单词
6 d2) 删除两个句子
7 d5} 删除5个段落
8 dG 或 :.,
d
删
除
当
前
行
到
编
辑
缓
冲
区
末
尾
的
所
有
行
9
d
g
g
或
d
1
G
或
:
1
,
.
d
删
除
当
前
行
到
编
辑
缓
冲
区
开
头
的
所
有
行
10
:
1
,
d 删除当前行到编辑缓冲区末尾的所有行 9 dgg 或 d1G 或:1,.d 删除当前行到编辑缓冲区开头的所有行 10 :1,
d 删除当前行到编辑缓冲区末尾的所有行9dgg或d1G或:1,.d删除当前行到编辑缓冲区开头的所有行10:1,d 或 :%f 删除整个编辑缓冲区
11 d/word 删除从光标所在位置到单词word的所有文本
12 .,/word/d 删除从光标所在位置到单词word的所有文本
13 df x 删除至当前行中x所在的位置
14 d^ 删除至该行的开始处
15 :g/^
/
d
删
除
文
件
中
所
有
空
行
3
插
入
模
式
中
删
除
操
作
U
删
除
当
前
行
H
删
除
前
一
个
字
符
W
删
除
前
一
个
词
4
撤
销
或
重
复
改
变
v
i
命
令
:
1
u
撤
销
上
一
命
令
对
编
辑
缓
冲
区
的
修
改
2
U
恢
复
当
前
行
(
即
一
次
撤
销
对
当
前
行
的
全
部
操
作
)
3.
点
号
重
复
上
一
命
令
对
编
辑
缓
冲
区
的
修
改
5
恢
复
删
除
语
法
:
"
1
p
(
P
)
说
明
:
11
为
缓
冲
区
的
编
号
。
2
p
在
当
前
行
的
下
面
插
入
,
P
在
当
前
行
的
上
面
插
入
。
6
复
制
上
一
次
删
除
命
令
说
明
p
复
制
上
一
次
删
除
的
内
容
,
插
入
到
光
标
的
后
面
/
下
面
P
复
制
上
一
次
删
除
的
内
容
,
插
入
到
光
标
的
前
面
/
上
面
7
其
它
有
用
的
一
些
删
除
删
除
行
尾
多
个
空
格
:
:
/d 删除文件中所有空行 3插入模式中删除操作 ^U 删除当前行 ^H 删除前一个字符 ^W 删除前一个词 4 撤销或重复改变 vi命令: 1 u 撤销上一命令对编辑缓冲区的修改 2 U 恢复当前行(即一次撤销对当前行的全部操作) 3 .点号 重复上一命令对编辑缓冲区的修改 5 恢复删除 语法:"1p(P) 说明: 1 1为缓冲区的编号。 2 p在当前行的下面插入,P在当前行的上面插入。 6 复制上一次删除 命令 说明 p 复制上一次删除的内容,插入到光标的后面/下面 P 复制上一次删除的内容,插入到光标的前面/上面 7其它有用的一些删除 删除行尾多个空格 : :%s/\s\+
/d 删除文件中所有空行3插入模式中删除操作U删除当前行H删除前一个字符W删除前一个词4撤销或重复改变vi命令:1u撤销上一命令对编辑缓冲区的修改2U恢复当前行(即一次撤销对当前行的全部操作)3.点号重复上一命令对编辑缓冲区的修改5恢复删除语法:"1p(P)说明:11为缓冲区的编号。2p在当前行的下面插入,P在当前行的上面插入。6复制上一次删除命令说明p复制上一次删除的内容,插入到光标的后面/下面P复制上一次删除的内容,插入到光标的前面/上面7其它有用的一些删除删除行尾多个空格: ://g
删除行首多个空格 : :%s/^\s*//g
删除重复行: :%s/^(.*)n1/1$/
删除所有中文: :%s/\v[^\x00-\xff]+//g
删除所有数字: :%s/\d//g
1.VI对行的概念相当严格,通常不可能把光标移到行尾,再删除行尾结束符(回车符)来连接当前行和它下面的一行,VI提供一个特定的命令,大写的J用来将行和行连接起来. 小写的 j 用来移动光标.
2.查找和替换
查找一行
使用f命令查找一行,移动光标到下一个所指定的字符上.
fa //在同一行中找下一个出现a的位置,通过分号来重复这个查找 ,
//只能单个字查询,可以查询中文
查找全文,的短语
移动光标到下一个出现的单词或短语上,使用 / 命令。这个命令和我们之前在 less 程序中学到 的一样。当你输入/命令后,一个”/”字符会出现在屏幕底部。下一步,输入要查找的单词或短语后, 按下回车。通过n来继续查找
替换
vi使用ex命令来执行查找和替代操作,把文件中的单词”Line” 更改为”line” ,输入一下命令:
:%s/Line/line/g
1
条目 含义
: 冒号字符运行一个 ex 命令。
% 指定要操作的行数。% 是一个快捷方式,表示从第一行到最后一行。另外,操作范围 也可以用
1,5 来代替(因为我们的文件只有5行文本),或者用 1,$ 来代替,意思是 “ 从第一行到文件的最后一行。” 如果省略了文本行的范围,那么操作只对当前行生效。
s 指定操作。在这种情况下是,替换(查找与替代)。
/Line/line 查找类型与替代文本。
g 这是“全局”的意思,意味着对文本行中所有匹配的字符串执行查找和替换操作。 如果省略 g,则 只替换每个文本行中第一个匹配的字符串。
在g后面添加一个c用来在确认的时候进行确认
替换确认按键
按键 行为
y 执行替换操作
n 跳过这个匹配的实例
a 对这个及随后所有匹配的字符串执行替换操作。
q or esc 退出替换操作。
l 执行这次替换并退出。l 是 “last” 的简写。
Ctrl-e, Ctrl-y 分别是向下滚动和向上滚动。用于查看建议替换的上下文。
3.编辑多个文件 vi file1 file2 file3
4.文件间的转换
使用ex命令
:n //装换到下一个文件
:N //转换到上一个文件
:buffers //显示出正在编辑的文件列表
:Buffer 缓冲区号码 //切换文件
5.将一个文件复制内容到另一个文件
使用复制,然后打开另一个文件,粘贴过去就可以啦
6.插入整个文件到另一个文件
在指定行上,使用ex命令
:r foot.txt //要粘贴进来的文件
7.保存工作
-在命令模式下 使用ZZ就会保存退出,
-使用ex命令, :wq 保存退出
:w命令也可以指定可选的文件名, 类似于 save as ,保存一个副本
:w foo1.txt
注意:当上面的命令以一个新名字保存文件时,但它并没有更改你正在编辑的文件的名字。 如果你继续编辑的话,你还是在编辑文件 foo.txt,而不是 foo1.txt。