Vim复制粘贴剪切命令详解
好的,我们来详细讲解一下 Vim 中关于复制(yank)、粘贴(paste)和剪切(delete,然后粘贴)的命令。
Vim 的操作逻辑是“动词+名词”。先理解几个核心“动词”:
y
:yank(复制)p
:paste(粘贴)d
:delete(删除,但被删除的内容会存入寄存器,因此相当于剪切)
1. 复制(Yank)
a) 复制整行
- 命令:
yy
- 记忆方法:yank y(整个当前行)。
- 效果: 将光标所在的整行内容复制到 Vim 的默认寄存器中。
b) 复制到某个字符 / 复制单词
- 复制一个单词:
yw
- 记忆方法:yank word。
- 效果:从光标当前位置开始,复制到单词末尾(包括单词后的空格)。
- 复制到下一个指定字符:
ytx
- 记忆方法:yank to the character x。
- 效果:从光标当前位置开始,复制到本行中下一个出现的字符
x
之前(不包含x
)。将x
替换为任意字符,如f
,;
等。
- 复制单个字符: 通常不单独操作,而是使用可视模式。
- 命令:
vl
然后y
- 记忆方法:visual mode,然后移动光标 l(向右)选择字符,最后 yank。
- 更简单的方法:在普通模式下,直接
y
然后l
(向右)或h
(向左)也能实现复制单个或多个字符,但不直观。
- 命令:
举例说明(复制):
假设有一行文本,光标在 W
上:
Hello World, this is Vim.
yy
:复制整行Hello World, this is Vim.
。yw
:复制从W
开始到,
之前的单词,即World
(包括后面的空格,所以是World
)。yt,
:复制从W
开始到,
之前的所有内容,即World
。vlly
:先按v
进入可视模式,然后按两次l
(向右移动两个字符),选中Wo
,再按y
复制。
2. 粘贴(Paste)
粘贴命令是统一的,取决于你复制的内容是整行还是部分内容。
- 命令:
p
(小写) 和P
(大写) - 区别:
p
(小写):在光标之后粘贴。- 如果复制的是整行,则粘贴到当前行的下一行。
- 如果复制的是单词或字符,则粘贴到光标所在字符的后面。
P
(大写):在光标之前粘贴。- 如果复制的是整行,则粘贴到当前行的上一行。
- 如果复制的是单词或字符,则粘贴到光标所在字符的前面。
举例说明(粘贴):
假设我们刚刚用 yy
复制了整行 Hello World, this is Vim.
,现在光标在另一行文本的 i
上:
I love it.
- 按下
p
:整行内容会粘贴到I love it.
的下一行。I love it. Hello World, this is Vim.
- 按下
P
:整行内容会粘贴到I love it.
的上一行。Hello World, this is Vim. I love it.
假设我们刚刚用 yw
复制了单词 World
,现在光标在 i
上:
I love it.
- 按下
p
:单词会粘贴到i
的后面,变成I World love it.
。 - 按下
P
:单词会粘贴到i
的前面,变成I World love it.
(因为i
是第一个字符,所以效果和p
一样,但如果光标在单词中间,区别就明显了)。
3. 剪切(Delete,然后粘贴)
在 Vim 中,剪切 = 删除(d
) + 粘贴(p
)。因为使用 d
系列命令删除的内容会被保存到寄存器中,可以立即被粘贴。
a) 剪切整行
- 命令:
dd
- 记忆方法:delete the current line。
- 效果: 删除当前行,并将该行内容存入寄存器。之后可以按
p
或P
粘贴。
b) 剪切单词或字符
- 剪切一个单词:
dw
- 记忆方法:delete a word。
- 效果:从光标当前位置开始,剪切到单词末尾。
- 剪切到行尾:
D
或d$
- 记忆方法:Delete to the end of the line。
- 剪切单个字符:
x
(剪切光标下的字符)或X
(剪切光标前的字符)
举例说明(剪切):
假设光标在 W
上:
Hello World, this is Vim.
dd
:整行被剪切。该行消失,内容Hello World, this is Vim.
被存入寄存器。按p
可以将其粘贴到别处。dw
:从W
开始剪切到,
之前,即World
被移除。原句变成Hello , this is Vim.
。此时按p
,可以将World
粘贴到光标处(即,
的前面)。x
:剪切光标下的字符W
,原句变成Hello orld, this is Vim.
。按p
可以将W
粘贴回来。
总结表格
操作 | 整行 | 单词 | 单个/部分字符 |
---|---|---|---|
复制(Yank) | yy | yw | v (进入可视模式)选中后 y ,或 ytx |
粘贴(Paste) | p (下行) / P (上行) | p (光标后) / P (光标前) | p (光标后) / P (光标前) |
剪切(Delete) | dd | dw | x (当前字符)或 v 选中后 d |
核心要点:
- 动词(y, d) + 名词(w, $, tX) 是 Vim 操作的精髓。
- 剪切(
d
)掉的内容不要怕,它们都在寄存器里,用p
可以粘贴回来。 - 多加练习,这些命令会变成肌肉记忆,极大提升编辑效率。