说我有以下几行:
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$
//归功于:测试者和Idan Arye进行vim高尔夫改进.
简化对相同类型文本进行操作的例程的一种方法是定义模仿文本对象选择命令的映射.下面的两对映射 - 一个用于可视模式,另一个用于操作员挂起模式 - 提供了一种方法来选择当前行上除了新行字符(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
复制要按字符(而不是按行)粘贴的行的内容,而是可以使用yal
或yil
命令来抽取和p
粘贴.