当filename是脚本输出时,vim拆分

时间:2017-07-10 13:11:42

标签: vim vi

我有一个脚本fn <regex>,它为我提供了一个文件的完整路径,该文件的名称符合我提供的正则表达式字符串(如果有多个匹配项,则为多个字符串)。

问题是,如何拆分vim并打开&#34;输出&#34;文件在拆分窗口中。

我尝试了:sp !fn my_file.name并获得了

  

E172:只允许一个文件名

注意,我也尝试:sp !fn my_file.name | xargs echo -n删除了尾随的新行,但得到了同样的错误

1 个答案:

答案 0 :(得分:1)

我不确定这是你想要的,但我想出了这段代码:

com! -nargs=+ Sp call s:open_multiple_splits(<q-args>)

fu! s:open_multiple_splits(script) abort
    let files = systemlist(a:script)
    for file in files
        if !empty(glob(file, 0, 1))
            exe 'split '.file
        endif
    endfor
endfu

它假定您的脚本是shell脚本而不是Vim脚本。

我通过创建以下shell脚本来测试它:

#!/bin/bash

echo /tmp/foo
echo /tmp/bar

我在/tmp/sh.sh内写的,并且可执行(chmod +x /tmp/sh.sh) 我还创建了2个文件/tmp/foo/tmp/bar

echo 'hello' >/tmp/foo
echo 'world' >/tmp/bar

然后,在Vim中,我输入了:Sp /tmp/sh.sh,它打开了2个水平视口,显示/tmp/foo/tmp/bar

请注意,如果您的脚本只输出一个文件路径,那么您不需要所有这些代码,您只需使用反向扩展(请参阅:h backtick-expansion):

:sp `your_script`