:redir >name_of_registers_file :registers :redir END :r name_of_registers_file :help redir
最后一个命令是非常有用的,因为有很多重定向选项:变量,寄存器,如何附加,进一步的聚宝盆。
我仍然发现它奇怪,令人讨厌的是,它使用END的方式,但由于一切可以跟随redir必须开始一个非字字符,至少它不含糊。
PS AFAIK(在这种情况下是相当遥远)没有办法直接读入缓冲区:你必须先将它存储在寄存器或变量。检查帮助的各种选项如何做到这一点。
PPS如果你想使用一个变量-maybe把它封装在一个函数中,并避免clobbering寄存器或全局变量 – 你必须将写入变量的多行字符串转换为一个列表。例如
:call append( '.',split(variable_you_redirected_to,"\n") )
否则(如果你只是做append(‘。’,var)),你会得到^ @'(nulls)而不是换行符,因为这是vimscript用来表示字符串变量的换行符。
编辑:as @Bill odom提到,使用:put = variable_you_redirected_to比复杂的append()表达式容易得多。谢谢,比尔!
PPPS
我写了一个snippet,使这个东西更方便。它声明一个函数Redir(命令,目标)和命令R.
该命令将最后一系列非空格字符解析为重定向目标,并将其传递给函数,该函数执行将命令输出重定向到重定向目标的样板。
例如
" Store the vim buffer list in buffer_list.txt :R ls >buffer_list.txt " Store error messages emitted by a function being debugged " in the 'unnamed register' :R call FunctionBeingDebugged() @">
这里有一些限制:例如,您将无法写入包含空格的文件名。这一点的好处是,你不必引用你的命令。我已经发布在gist.github.com,如果我最终改进它,我会尽量保持更新。或者你可以自己fork它< / noeuphemism>!
原文地址:https://www.jb51.cc/vim/389752.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。