如何在 vi 中拉出一行的一部分?

问题描述 投票:0回答:3

我花了相当多的时间寻找答案,但我只能找到vim的答案,这建议使用视觉模式或寄存器。这些似乎都不像 vi(版本 SVR4.0,Solaris 2.5.0)的选项。我知道

D
yy
dd
,它们可以猛拉或删除整行或直到行尾。

我现在想知道是否可以猛拉/删除一行的一部分:比如说,括号内的部分: 我想复制这一部分。

vi
3个回答
2
投票

所有移动命令都与

yank
配合使用,例如
h, j, k, l
代表左、下、上、右。因此,如果光标位于
 中的第一个 
p

I want to co[py this par]t of the line.

y11l
(猛拉十一个埃尔)给出

py this par

y3w
为您提供接下来的 3 个单词,这意味着如果结尾
]
不存在,它将包括最后的
t

如果您的光标位于

[
上(假设它实际上是字符串的一部分),则
y%
(移动到匹配的括号)会给出:

[py this par]

0
投票

你可以做

y
f
character

这将

[y]ank
直到
[f]inds
无论如何
character

在你的例子中。你可以

f p y f r

找到 p - 猛拉直到找到 r

举个例子

我想复制这行的这一部分

我通常会这样做

f
p
- 找到 p

y
- 进入“猛拉模式”

/he line
- 直到找到短语“he line”

Enter

“he line”就是字符后面出现的任何文本,我一直输入,直到我知道选择它就足够了,而不是其他东西。


0
投票

使用标记功能。

对于这行:“我想复制这行的这一部分。”, 首先使用您想要的任何方式将光标移过“r”字符。然后用“m1”标记它。接下来,将光标移动到“o”字符之后。要选择文本,请使用命令“y`1”。这会将当前光标“o”处的文本拉到标记 1 处的光标位置。然后,您可以移动到另一个光标位置并使用 put“p”命令复制文本。

© www.soinside.com 2019 - 2024. All rights reserved.