说我有以下几行:
thing();
getStuff();
我想使用 y y 取getStuff()
,前往thing()
,将光标放在(
上并点击 p ,但是由于我猛拉了整条线, p 会将getStuff()
粘贴到原来的位置。
我知道你可以 ^ D 获得getStuff()
然后 p 的行将做我想要的。但是,我发现这比 y y 更加乏味。
有没有办法 y y 但是粘贴内联行?
答案 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 正在复制包括换行符在内的整行。另一种方法是从行的开头复制到结束,然后粘贴。
^ ý $
//归功于:测试者和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
来复制要粘贴的行的内容
字符(而不是行),可以使用yal
或yil
命令来拉动
并像往常一样p
粘贴。
答案 3 :(得分:4)
效率较低但很简单的方法: