如何创建Vim命令并将其结果复制到剪贴板?在Vim上运行bash命令并将结果复制到剪贴板
我想将Markdown转换为HTML并将结果复制到剪贴板。到目前为止,我有:
nmap md :%!/bin/markdown/Markdown.pl --html4tags
但是,这将替代我打开的文件上的Vim以降价的结果。
如何创建Vim命令并将其结果复制到剪贴板?在Vim上运行bash命令并将结果复制到剪贴板
我想将Markdown转换为HTML并将结果复制到剪贴板。到目前为止,我有:
nmap md :%!/bin/markdown/Markdown.pl --html4tags
但是,这将替代我打开的文件上的Vim以降价的结果。
你没有说你正在使用哪个系统,但一般将它保存在+
寄存器应该工作。您可以拨打system()
:
:let @+=system("markdown --html4tags", join(getline(1,line("$")), "\n"))
的system()
函数接受第二个参数(可选)作为输入 命令,在这里我使用的其他功能链检索网页内容的缓冲区 。不确定,但应该有更好的方式来做到这一点(如果有人知道 ,请让我知道)。
或者,你可以直接通过您的markdown
文件名输入:
:let @+=system("markdown --html4tags " . shellescape(expand("%:p")))
但请记住,你需要调用此之前写入文件。
两个重要注意事项:
nnoremap md :let @+=system(...)
我正在使用Mac OS X.明白了:'E354:无效的寄存器名称:'+'' –
我也在Mac OS X上,但使用MacVim。你是否从终端使用它?然后我不知道这是否可能。也许只有GUI可以与剪贴板交互,因为它是一个窗口系统的事情,而不是终端模拟器。 – sidyll
我在终端上试过了。我如何访问MacVim上的快捷方式? –
得到XSEL包
和管道标准输出到XSEL --clipboard
例如:
cat /etc/passwd | xsel --clipboard
这就是你想要的?
灌装(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!)
(我会跳过命令映射问题,因为它总让我多次尝试,我还是要查看它;寻找映射命令的帮助应该比找到*寄存器更容易。)
相关问题:http://stackoverflow.com/questions/1694392/vim-store-output-of-external -command-into-a-register –