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

tes*_*ter 51 vim

说我有以下几行:

thing();
getStuff();
Run Code Online (Sandbox Code Playgroud)

我想getStuff()使用yy,继续前进thing(),将光标放在上面(然后点击p,但是因为我猛拉了整条线,所以p将它粘贴到getStuff()原来的位置.

我知道你可以^D得到那条线getStuff()然后p会做我想要的.但是,我觉得这比单调乏味得多yy.

有没有什么方法可以yy粘贴内联线

bhe*_*mar 32

使用yiw("猛拉内心词")而不是yy只是想要你想要的东西:

yy是逐行扫描并将抓住整行,包括回车,如果你看一下未命名的寄存器(""),你可以看到:registers它在其中用作粘贴的来源.见:help "":

对于任何未指定寄存器的put命令(p或P),Vim使用未命名寄存器的内容.此外,您可以使用名称""来访问它.这意味着您必须键入两个双引号.写入""寄存器写入寄存器"0.

另一个好处yiw是你不必站在你正在唠叨的"字"的前面!


Tab*_*tha 31

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

^y$

  • ^ 转到该行的第一个字符.
  • y Yank直到
  • $ 行结束.

//归功于:测试者和Idan Arye进行vim高尔夫改进.

  • 你可以使用`_y $`.`_`的作用是`[count] - 向下1行,在第一个非空白字符| linewise | .`上.没有`[count]`,它与`^`相同,但是`_`在键盘上更容易到达. (10认同)
  • 我在我的vimrc中有'nnoremap Y y $`,所以`Y`猛拉到当前行的末尾(类似于`C`和'D`).这将节省上述解决方案中的击键. (2认同)

ib.*_*ib. 8

简化对相同类型文本进行操作的例程的一种方法是定义模仿文本对象选择命令的映射.下面的两对映射 - 一个用于可视模式,另一个用于操作员挂起模式 - 提供了一种方法来选择当前行上除了新行字符(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>
Run Code Online (Sandbox Code Playgroud)

因此,不像往常那样使用yy复制要按字符(而不是按行)粘贴的行的内容,而是可以使用yalyil命令来抽取和p粘贴.


wul*_*pro 7

一种效率较低但简单的方法:

  • v 突出显示单词,
  • y 猛拉突出显示的单词,
  • p (在行尾)您要粘贴