我有一个脚本fn <regex>
,它为我提供了一个文件的完整路径,该文件的名称符合我提供的正则表达式字符串(如果有多个匹配项,则为多个字符串)。
问题是,如何拆分vim并打开&#34;输出&#34;文件在拆分窗口中。
我尝试了:sp !fn my_file.name
并获得了
E172:只允许一个文件名
注意,我也尝试:sp !fn my_file.name | xargs echo -n
删除了尾随的新行,但得到了同样的错误
答案 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`