有没有办法在将 vim 缓冲区复制到剪贴板之前对其应用 sed 转换?
我使用以下命令将文档中的所有文本行复制到系统剪贴板:
%y+
通常,特别是为了将代码复制到 StackOverflow ;),我对缓冲区应用 sed 转换,以便更容易粘贴在 MarkDown 中:
%s:^:\t:g
有没有一种方法可以链接命令而不实际将其应用于我的缓冲区,而仅应用于复制的文本?
I'm using the following command to copy all lines of text in a document to the system clipboard:
%y+
Usually, especially in order to copy code to StackOverflow ;), I apply a sed transformation to my buffer in order to make it easier to paste in with MarkDown:
%s:^:\t:g
Is there a way to chain the commands without actually applying it to my buffer, only to the copied text?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我建议使用 CLI 实用程序将其放在剪贴板上:我之前找到了几个实用程序,但这里有一个:
所以你会这样做
,或者
后者使用 X 剪贴板而不是主剪贴板(假设是 UNIX)。
在 Windows 上,可能有类似的实用程序
编辑
纯 vim 解决方案将是:
注意:
I suggest using a CLI utility to put it on the clipboard: there are several I found previously, but here's one:
So you'd do
or
the latter uses the X clipboard instead of the primary clipboard (assuming UNIX).
On windows, there are likely similar utilities
Edit
A pure vim solution would be:
Notes:
如果您不介意向撤消列表添加一个条目(这意味着实际上
编辑缓冲区的内容),您可以执行替换,拉出文本,
并用一个命令撤消该替换。
另一种解决方案是在内容中进行替换
+
复制后立即注册。If you do not mind adding an entry to the undo list (that means actually
editing contents of the buffer), you can perform substitution, yank the text,
and undo that substitution in one command.
Another solution would be to make the substitution right in the contents of
the
+
register just after copying.如果
shiftwidth
等于 4 并且设置了expandtab
,我会这样做:7 次击键还不错。当然没有 ex 命令。如果你想要 ex 命令,你可以这样做:
然后:
将把你想要的任何内容放入剪贴板
If
shiftwidth
equals 4 andexpandtab
is set, I would do:7 keystrokes is not that bad. Of course there is no ex command. If you want ex commands you could do:
And then:
will put whatever you want into the clipboard