Yank来自特定行的第一个字

时间:2013-01-23 09:46:48

标签: vim

我发现:23y会拉动整个第23行。 但我想做的只是第23行的第一个词。 我试过:23yw,但这不起作用。有一个简单的方法吗?

这可以不先行,然后yanking然后键入`返回到我正在编辑的行吗?

6 个答案:

答案 0 :(得分:3)

23ggyw会这样做。我认为没有更快的方法。

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

答案 1 :(得分:1)

我认为没有移动光标就有办法做到这一点。

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

:23norm! yw

故障:

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

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

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

  • yw猛烈抨击第一个字。

添加<C-o>以返回您的来源。

答案 2 :(得分:1)

:y:yank Ex命令的缩写,这就是:yw不起作用的原因;这是普通模式命令。正如其他答案已经显示的那样,您可以通过:normal yw从命令行触发这些答案。

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

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

但是输入并不容易,只适合功能。

答案 3 :(得分: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|.

答案 4 :(得分:0)

以下方法可以在不按要求移动光标的情况下工作,但输入时会很麻烦。

:23y|norm PJ0eld$

或者你可以尝试用

来解决问题
:23t.|norm eld$

答案 5 :(得分:-1)

23jyw应该能够做到这一点,它将带你到第23行并猛拉第一个字