3

我想这:23y会拉动整个第 23 行。但我想做的只是拉出第 23 行的第一个单词。我试过:23yw了,但这不起作用。是否有捷径可寻?

这可以在不先进入该行然后拉动然后键入`以返回到我正在编辑的行的情况下完成吗?

4

6 回答 6

3

23ggyw会做的。我不认为有更快的方法。

解释:23gg将光标移动到第 23 行,yw拉出一个单词。请注意,这仅在您startofline设置了选项(这是默认设置)时才有效。否则,您需要显式移至第一个非空白字符:23gg^yw.

于 2013-01-23T09:55:26.957 回答
1

我认为没有移动光标的方法可以做到这一点。

无论如何,这是另一种方法:

:23norm! yw

分解:

  • :因为我们使用的是 Ex 命令,

  • 23是我们想要做某事的线,它的范围是1,

  • norm[al]在给定范围内执行正常模式命令,

  • yw猛拉第一个词。

添加<C-o>回到你来自的地方。

于 2013-01-23T11:01:04.297 回答
1

The:y:yankEx 命令的缩写,所以:yw不起作用;这是一个普通模式命令。正如其他答案已经显示的那样,您可以从命令行通过:normal yw.

恐怕没有办法以实际的方式避免跳跃(但是,如前所述,<C-O>让你跳回原来的位置)。你可以使用 Vimscript:

:let @" = matchstr(getline(23), '^\w\+')

但这很难打字,而且只适用于一个函数。

于 2013-01-23T12:15:38.257 回答
0

23Gyw在正常模式下输入应该可以完成这项工作。

G           Goto line [count], default last line, on the first
            non-blank character |linewise|.  If 'startofline' not
            set, keep the same column.
            G is a one of |jump-motions|.
于 2013-01-23T09:59:53.463 回答
0

以下操作无需按要求移动光标即可,但输入起来很麻烦。

:23y|norm PJ0eld$

或者你可以试着用

:23t.|norm eld$
于 2013-01-24T21:07:03.693 回答
-1

23jyw 应该可以做到,它会带你到第 23 行并拉出第一个单词

于 2013-01-23T09:49:34.773 回答