我想这:23y会拉动整个第 23 行。但我想做的只是拉出第 23 行的第一个单词。我试过:23yw了,但这不起作用。是否有捷径可寻?
这可以在不先进入该行然后拉动然后键入`以返回到我正在编辑的行的情况下完成吗?
我想这:23y会拉动整个第 23 行。但我想做的只是拉出第 23 行的第一个单词。我试过:23yw了,但这不起作用。是否有捷径可寻?
这可以在不先进入该行然后拉动然后键入`以返回到我正在编辑的行的情况下完成吗?
23ggyw会做的。我不认为有更快的方法。
解释:23gg将光标移动到第 23 行,yw拉出一个单词。请注意,这仅在您startofline设置了选项(这是默认设置)时才有效。否则,您需要显式移至第一个非空白字符:23gg^yw.
我认为没有移动光标的方法可以做到这一点。
无论如何,这是另一种方法:
:23norm! yw
分解:
:因为我们使用的是 Ex 命令,
23是我们想要做某事的线,它的范围是1,
norm[al]在给定范围内执行正常模式命令,
yw猛拉第一个词。
添加<C-o>回到你来自的地方。
The:y是:yankEx 命令的缩写,所以:yw不起作用;这是一个普通模式命令。正如其他答案已经显示的那样,您可以从命令行通过:normal yw.
恐怕没有办法以实际的方式避免跳跃(但是,如前所述,<C-O>让你跳回原来的位置)。你可以使用 Vimscript:
:let @" = matchstr(getline(23), '^\w\+')
但这很难打字,而且只适用于一个函数。
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|.
以下操作无需按要求移动光标即可,但输入起来很麻烦。
:23y|norm PJ0eld$
或者你可以试着用
:23t.|norm eld$
23jyw 应该可以做到,它会带你到第 23 行并拉出第一个单词