Vim复制非整行内容时去掉前导和尾随空格

4

我正在尝试创建一个映射,以便我可以选择一行文本而不是整行,这样我就可以在光标处粘贴(而不是在之前或之后),而不会引入可能在复制的行之前存在的空格。

这就是我想做的事情。

 "copy non linewise
 nmap <leader>yy 0y$

2
我认为最好的方法是“转换”你的粘贴,而不是以不同的方式复制。一定要查看UnconditionalPaste.vim。 - Peter Rincker
@Peter Rinker。我看到了那个插件,但它似乎除了在光标处插入粘贴之外,还有其他所有选项。 [p和] p已经在vim中了。 - sayth
我会询问@Ingo Karkat。我相信可以安排一个新的映射。 - Peter Rincker
感谢@PeterRincker的推荐!实际上,插件的gcp已经可以做到这一点。 - Ingo Karkat
3个回答

6
nnoremap <Leader>yy ^yg_

^g_0$类似,但它们排除空白字符。


我的建议是 nnoremap y_ ^yg_,因为大多数情况下重复击键比两个不同的符号慢。 - galva

4
我的无条件粘贴插件有一个gcp/gcP映射,不仅可以将任意数量的复制行平铺成字符粘贴,而且还会删除前导和尾随空格。
只在粘贴时“转换内容”的优点是,在复制时无需考虑未来的使用,由于原始内容得到保留,因此可以以各种方式(按行、按字符、以及我插件支持的其他任何方式)粘贴相同的寄存器内容。

1

或者,您可以将Y重新映射为一直拷贝到字符串结尾(类似于C):

noremap Y y$

现在^Y就可以完成工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接