我如何使用 vim 从一个词的中间环绕到一行的末尾?

问题描述 投票:0回答:1
printemployee.fullname(emp_1)

我想用 vs code vim-surround 给我这个结果:

print(emloyee.fullname(emp_1)

我试过

yss
e
上的光标但是它包裹了整行。

我试过

ysw
e
上的光标但那只包裹
( employee )
.

我试过

ysiw
e
上的光标但包裹
( printemployee )
.

vim tags vscodevim surround
1个回答
0
投票

如果你只想在光标前插入一个

(
,按照你的例子,那么Surround是没用的。

如果缺少的

)
是错字(这很可能是因为
p
中缺少
employee
),而您实际上想要:

print(employee.fullname(emp_1))

那么你应该做:

ys$)

字面意思是“用括号将文本从这里包围到行尾”。

请注意,这与环绕声无关。

ys
是一个 operator,它对您给出的动作所覆盖的文本进行操作,就像原生的
y
d
.

你想要的动作就在你的问题的标题中:“到行尾”,所以使用语义截然不同的随机动作是没有意义的。预计以下议案均不符合要求:

  • w
    ,表示“从光标到下一个单词的第一个字符”,
  • iw
    ,表示“当前单词”,

所以使用它们是没有意义的。

yss
相当明确覆盖整行,这使得它没用。

在这里,正确的动作是

$
,表示“到行尾”。

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