Vim yank line然后将其粘贴到内联中

时间:2011-10-14 21:58:41

标签: vim

说我有以下几行:

thing();
getStuff();

我想使用 y y getStuff(),前往thing(),将光标放在(上并点击 p ,但是由于我猛拉了整条线, p 会将getStuff()粘贴到原来的位置。

我知道你可以 ^ D 获得getStuff()然后 p 的行将做我想要的。但是,我发现这比 y y 更加乏味。

有没有办法 y y 但是粘贴内联行?

4 个答案:

答案 0 :(得分:31)

使用 y i w (“yank inner word”)而不是 y y < / kbd>只是想要你想要的东西:

y y 按行划线并将获取整行,包括回车,如果查看未命名的寄存器,可以看到{{1 } {}在""中用作粘贴的来源。见:registers

  

Vim使用未命名寄存器的内容来执行任何put命令(p或P)   没有指定寄存器。此外,您可以使用它访问它   name'“'。这意味着你必须输入两个双引号。写入”“   寄存器写入寄存器“0。

y i w 的另一个好处是,您不必位于“单词”的前面猛拉!

答案 1 :(得分:30)

问题是 y y 正在复制包括换行符在内的整行。另一种方法是从行的开头复制到结束,然后粘贴。

^ ý $

  • ^ 转到该行的第一个字符。
  • y Yank until
  • $ 行尾。

//归功于:测试者和Idan Arye对vim高尔夫球场的改进。

答案 2 :(得分:8)

简化对同一种文本操作的例程的一种方法是 定义模仿文本对象选择命令的映射。两对 映射低于一个用于可视模式,另一个用于操作员待定 mode - 提供一种方法来选择当前行上除new之外的所有内容 行字符(al),以及从第一个非空白开始的所有内容 当前行的字符到最后一个非空字符包含 (il)。

:vnoremap <silent> al :<c-u>norm!0v$h<cr>
:vnoremap <silent> il :<c-u>norm!^vg_<cr>
:onoremap <silent> al :norm val<cr>
:onoremap <silent> il :norm vil<cr>

因此,而不是使用yy来复制要粘贴的行的内容 字符(而不是行),可以使用yalyil命令来拉动 并像往常一样p粘贴。

答案 3 :(得分:4)

效率较低但很简单的方法:

  • v 突出显示单词,
  • y 用于拉出突出显示的单词,
  • 你要粘贴的
  • p (在行尾)
相关问题