如何创建Vim命令并将其结果复制到剪贴板?
我想将Markdown转换为HTML并将结果复制到剪贴板。到目前为止,我得到了:
nmap md :%!/bin/markdown/Markdown.pl --html4tags
但是这会将我在Vim上打开的文件替换为Markdown的结果。
答案 0 :(得分:4)
您没有说明您正在使用哪个系统,但通常将其保存在+
中
注册应该工作。您可以致电system()
:
:let @+=system("markdown --html4tags", join(getline(1,line("$")), "\n"))
system()
函数将第二个参数(可选)作为输入
命令,这里我正在使用一系列其他函数来检索内容
当前的缓冲区。不确定,但应该有更好的方法(如果
有人知道,请告诉我。)
或者,您可以直接将markdown
文件名作为输入传递:
:let @+=system("markdown --html4tags " . shellescape(expand("%:p")))
但请记住,在调用此文件之前,您需要编写该文件。
两个重要的注释:
nnoremap md :let @+=system(...)
答案 1 :(得分:1)
获取xsel包
和管道标准输出到xsel --clipboard
例如:
cat /etc/passwd | xsel --clipboard
这就是你要找的东西吗?
答案 2 :(得分:0)
填写缺失的部分(迟到2年)。随着用户在Mac上的澄清以及提问者的“为什么它对我不起作用?”问题没有得到解答。
要将命令的输出从MacVim(GUI版本)重定向到系统剪贴板,您需要将'*'设置为需要更改剪贴板设置的“剪贴板寄存器” '未命名':
set clipboard 'unnamed' # 'cb' can be substituted for 'clipboard'
然后sidyll的答案应该有效,除了指定'*'寄存器而不是'+'寄存器:
:let @*=system(...)
剪贴板功能可能无法编译到MacVim的“终端版本”中,当可用时,选项设置与“未命名”不同。要查看有关何处以及如何工作的更多详细信息,请参阅MacVim中使用Vim帮助命令的文档:
:help 'clipboard' (include the single quotes since it's a set option!)
(我将跳过命令映射问题,因为它总是需要我多次尝试,我仍然需要查找它;找到映射命令的帮助应该比找到*寄存器更容易。)