vim 常用命令删除、撤销、恢复、复制、粘贴、替换
1、撤销与恢复撤销命令说明u撤销上一命令对编辑缓冲区的修改。U恢复当前行(即一次撤销对当前行的全部操作)。.重复上一命令对编辑缓冲区的修改。ctrl + ru 的逆向操作,恢复上一命令对编辑缓冲区的修改。2、复制与粘贴命令说明y0复制从当前光标(不包含)左侧开始到该行行首的所有数据。y$复制从当前光标(包含)开始...
·
1、撤销与恢复撤销
命令 | 说明 |
---|---|
u | 撤销上一命令对编辑缓冲区的修改。 |
U | 恢复当前行(即一次撤销对当前行的全部操作)。 |
. | 重复上一命令对编辑缓冲区的修改。 |
ctrl + r | u 的逆向操作,恢复上一命令对编辑缓冲区的修改。 |
2、复制与粘贴
命令 | 说明 |
---|---|
y0 | 复制从当前光标(不包含)左侧开始到该行行首的所有数据。 |
y$ | 复制从当前光标(包含)开始到该行行尾的所有数据。 |
yy | 复制当前行。 |
nyy | 复制从当前行(包含)开始的n行。 |
y1G | 复制从当前行(包含)开始到第一行(包含)的所有数据。 |
yG | 复制从当前行(包含)开始到最后一行(包含)的所有数据。 |
p | 将复制的内容粘贴到下一行,原有的内容按顺序后移。 |
np | 将复制的内容粘贴到下一行,粘贴n次,原有的内容按顺序后移。 |
P | 将复制的内容粘贴到上一行,原有的内容按顺序后移。 |
nP | 将复制的内容粘贴到上一行,粘贴n次,原有的内容按顺序后移。 |
J | 将当前行与下一行数据合并成一行。 |
3、行内删除
命令 | 说明 |
---|---|
x | 删除当前光标处的字符。 |
nx | 删除当前光标处的n个字符。 |
X | 删除当前光标左侧的字符。 |
nX | 删除当前光标左侧的n个字符。 |
d0 | 删除从当前光标左侧到本行行首的字符。 |
d^ | 删除从当前光标左侧到本行行首的字符。 |
d$ | 删除从当前光标到本行末尾的字符。 |
D | 删除从当前光标到本行末尾的字符。 |
dh | 删除当前光标左侧的字符。 |
dl | 删除当前光标处的字符。 |
d->move | 删除当前光标到新光标位置的字符。 |
dw | 向后删除从当前光标到下一个单词起始处的字符,不包含下一个单词的第一个字符,单词以空格分隔。 |
dnw | 向后删除从当前光标开始,包含当前单词在内的n个单词,单词以空格分隔。 |
de | 向后删除从当前光标到当前单词结尾处的字符,包含当前单词的最后一个字符,单词以空格分隔。 |
dne | 向后删除从当前光标开始,包含当前单词在内的n个单词,单词以空格分隔。 |
db | 向前删除从当前光标(不包含)左侧到当前单词起始处的字符,包含当前单词的第一个字符,单词以空格分隔。 |
dnb | 向前删除从当前光标(不包含)左侧开始,包含当前单词在内的n个单词,单词以空格分隔。 |
df[x] | 删除当前光标(包含)至字符x(包含)的所有数据。 |
4、行间删除
命令 | 说明 |
---|---|
dd | 删除当前。 |
ndd | 删除从当前行开始的n行。 |
dj | 删除当前行和下一行。 |
dk | 删除当前行和上一行。 |
d1G或dgg或:1,.d | 删除当前行(包含)所在行到第一行(包含)的所有数据。 |
dG或:.,$d | 删除当前行(包含)所在行到最后一行(包含)的所有数据。 |
:nd | 删除指定的第n行。 |
:n1,n2d | 删除指定范围[n1,n2]的行。 |
:1,$d或:%d | 删除所有行。 |
:g/^$/d | 删除所有空行。 |
5、正则表达式删除
正则表达式删除的原理是通过正则表达式查找内容,然后将对应的内容替换为空,看起来像删除一样。
命令 | 说明 |
---|---|
:%s/\d//g | 删除所有数字。 |
:%s/\s//g | 删除所有空格。 |
:%s/\n+$//g | 删除文档末尾回车产生的空行。 |
6、进入 Insert 模式
命令 | 说明 |
---|---|
i | 在当前光标处进行编辑。 |
I | 在行首插入。 |
A | 在行末插入。 |
a | 在当前光标后插入。 |
o | 在当前行后插入一个新行。 |
O | 在当前行前插入一个新行。 |
7、退出并保存
命令 | 说明 |
---|---|
:q! | 强制退出,不保存。 |
:q | 退出。 |
:wq! | 强制保存并退出。 |
:w | 保存文件。 |
:w <文件路径> | 另存为。 |
:saveas <文件路径> | 另存为。 |
:x | 保存并退出。 |
:wq | 保存并退出。 |
8、替换
语法为:
:[addr]s/src/dist/[option]
命令 | 说明 |
---|---|
[addr] | 表示检索范围,省略时表示当前行。 |
[addr] | “1,20” :表示从第1行到20行。 |
[addr] | “%” :表示整个文件,同“1,”。 |
[addr] | “. ,” :从当前行到文件尾。 |
s | 表示替换操作。英文全称:substitute |
src | 源字符串:如果在源字符串和目的字符串中出现特殊字符,需要用”\”转义 如 \t。 |
dist | 目的字符串:如果在源字符串和目的字符串中出现特殊字符,需要用”\”转义 如 \t。 |
[option] | 表示操作类型,g 表示全局替换。 |
[option] | c 表示进行确认。我们有很多时候会需要某个字符(串)在文章中某些位置出现时被替换,而其它位置不被替换的有选择的操作,这就需要用户来进行确认。 |
[option] | p 表示替代结果逐行显示。 |
: s/vivian/sky/ | 替换当前行第一个 vivian 为 sky |
: s/vivian/sky/g | 替换当前行所有 vivian 为 sky |
:%s/vivian/sky/ | 替换每一行第一个 vivian 为 sky |
:%s/vivian/sky/g | 替换每一行所有 vivian 为 sky |
9、g命令
表示查找到 pattern 匹配的内容,然后对其执行 cmd 命令。语法为:
:g/pattern/cmd
命令 | 说明 |
---|---|
g | 表示检索命令,我推测是 grep 的缩写。 |
pattern | 正则表达式 |
cmd | 命令行,表示查找到 pattern 匹配的内容,然后对其执行 cmd 命令。 |
:g/vivian/s//sky/ | 替换每一行第一个 vivian 为 sky |
:g/vivian/s//sky/g | 替换每一行所有 vivian 为 sky |
注意注意注意:n表示阿拉伯数字
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献6条内容
所有评论(0)