有没有办法在将vd缓冲区复制到剪贴板之前将其应用于vim缓冲区?

Naf*_*Kay 4 vim sed

我正在使用以下命令将文档中的所有文本行复制到系统剪贴板:

%y+
Run Code Online (Sandbox Code Playgroud)

通常,特别是为了将代码复制到StackOverflow;),我将sed转换应用于我的缓冲区,以便更容易使用MarkDown进行粘贴:

%s:^:\t:g
Run Code Online (Sandbox Code Playgroud)

有没有办法链接命令而不实际应用它到我的缓冲区,只有复制的文本?

seh*_*ehe 6

我建议使用CLI实用程序将它放在剪贴板上:我之前发现了几个,但是这里有一个:

所以你会这样做

:%!sed 's:^:\t:g`|xclip
Run Code Online (Sandbox Code Playgroud)

要么

:%!sed 's:^:\t:g`|xclip -selection c
Run Code Online (Sandbox Code Playgroud)

后者使用X剪贴板而不是主剪贴板(假设为UNIX).

在Windows上,可能有类似的实用程序

编辑

一个纯粹的vim解决方案是:

:let @+=substitute(join(getbufline("%", 1, "$"), "\r\n"), "^\\|\n", "\&\t", "g")
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 它不是很有效率(但你使用它的帖子......所以它不是荷马的Oddyssee)
  • 我假设你想要Windows线端(这是我 SO 复制时得到的)