2011-08-14 27 views
2

如何创建Vim命令并将其结果复制到剪贴板?在Vim上运行bash命令并将结果复制到剪贴板

我想将Markdown转换为HTML并将结果复制到剪贴板。到目前为止,我有:

nmap md :%!/bin/markdown/Markdown.pl --html4tags

但是,这将替代我打开的文件上的Vim以降价的结果。

+0

相关问题:http://stackoverflow.com/questions/1694392/vim-store-output-of-external -command-into-a-register –

回答

4

你没有说你正在使用哪个系统,但一般将它保存在+ 寄存器应该工作。您可以拨打system()

:let @+=system("markdown --html4tags", join(getline(1,line("$")), "\n")) 

system()函数接受第二个参数(可选)作为输入 命令,在这里我使用的其他功能链检索网页内容的缓冲区 。不确定,但应该有更好的方式来做到这一点(如果有人知道 ,请让我知道)。

或者,你可以直接通过您的markdown文件名输入:

:let @+=system("markdown --html4tags " . shellescape(expand("%:p"))) 

但请记住,你需要调用此之前写入文件。

两个重要注意事项:

  1. 我没有键入降价的完整路径。用它。
  2. 我这里没有使用地图,最终结果会是这样的:在一个缺失
nnoremap md :let @+=system(...)
+0

我正在使用Mac OS X.明白了:'E354:无效的寄存器名称:'+'' –

+0

我也在Mac OS X上,但使用MacVim。你是否从终端使用它?然后我不知道这是否可能。也许只有GUI可以与剪贴板交互,因为它是一个窗口系统的事情,而不是终端模拟器。 – sidyll

+0

我在终端上试过了。我如何访问MacVim上的快捷方式? –

1

得到XSEL包

和管道标准输出到XSEL --clipboard

例如:

cat /etc/passwd | xsel --clipboard 

这就是你想要的?

0

灌装(2年晚期)。澄清说用户是在Mac上,并且因为提问者的“为什么它不适合我?”问题没有回答。

将一个命令到系统剪贴板重定向输出从的MacVim(GUI版本)中,你需要设置“*”是“剪贴板注册”您需要更改剪贴板设置为“无名” :

set clipboard 'unnamed' # 'cb' can be substituted for 'clipboard' 

然后sidyll的答案,除了应努力指定“*”注册,而不是“+”注册:

:let @*=system(...) 

剪贴板功能可能不会被编译到的MacVim的“终端版本”和什么时候n它可用的选项设置与“未命名”不同。要了解关于什么工作在哪里以及如何更多详细信息,请参阅的MacVim文档使用Vim的帮助下命令:

:help 'clipboard' (include the single quotes since it's a set option!) 

(我会跳过命令映射问题,因为它总让我多次尝试,我还是要查看它;寻找映射命令的帮助应该比找到*寄存器更容易。)

相关问题