Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Vimscript中的多行字符串传递给外部脚本_Vim - Fatal编程技术网

将Vimscript中的多行字符串传递给外部脚本

将Vimscript中的多行字符串传递给外部脚本,vim,Vim,我正在使用以下方式将可视选择的vim文本传递到Ruby脚本: system("echo -n " . shellescape(var_holding_selected_text) . " | my/ruby/script") 脚本能够从STDIN读取文本,但是我发现所有的换行符前面都有反斜杠。我推测这是因为shellescape函数逃避换行符。我有两个问题: 如果shellescape还引用字符串,为什么它会转义换行符和/或空字节?显然,引用字符串就足够了,因为脚本中转义的结果是我收到了文本反

我正在使用以下方式将可视选择的vim文本传递到Ruby脚本:

system("echo -n " . shellescape(var_holding_selected_text) . " | my/ruby/script")
脚本能够从STDIN读取文本,但是我发现所有的换行符前面都有反斜杠。我推测这是因为shellescape函数逃避换行符。我有两个问题:

如果shellescape还引用字符串,为什么它会转义换行符和/或空字节?显然,引用字符串就足够了,因为脚本中转义的结果是我收到了文本反斜杠。 有没有更好的方法将文本传递到我的ruby脚本?
绕过shell命令行的所有转义问题和潜在大小限制的另一种方法是使用tempname和writefile将文本写入临时文件,然后将该文件名传递或:cating到Ruby脚本。然后,使用delete进行清理。

另一种可以绕过shell命令行的所有转义问题和潜在大小限制的方法是使用tempname和writefile将文本写入临时文件,然后将该文件名传递或:cating到Ruby脚本。然后,用delete进行清理。

刚刚找到了一种帮助方法:

printf应该在没有解释的情况下遍历shellescape的全部内容。

刚刚在帮助下找到了一种方法:

printf应该贯穿shellescape的全部内容而不进行解释

silent execute '!printf "\%s" '. shellescape(a:text, 1) .' | nc localhost 2224'