在父目录中向上搜索文件,并在vsplit或newtab中打开

时间:2016-03-15 21:33:42

标签: vim

我想打开一个bld.log文件作为默认值,否则输入文件名在vim vsplit窗口或newtab中,无论我打开哪个嵌套子文件夹。
所以我在〜/ .vimrc中添加了以下函数,但不是打开搜索路径path1而是打开名为path1的新文件。
请让我知道我在这里缺少什么,或者我如何实现它?

function! Err1(...)  
if a:0 > 0
    let s:path1 = findfile(a:1,';')
else
    let s:path1 = findfile('bld.log',';')
end
exec ':vsp ' . s:path1
endfunction  
command -nargs=1 Err call Err1(...)  

P.S。我想在.vimrc上面做,而不是在.bashrc

1 个答案:

答案 0 :(得分:0)

您可以使用exec执行此操作(这会在编辑前回答原始问题,如何使用函数中的:tabnew):

function! Err1()
    let s:path1 = findfile('README.md','.,**')
    echo findfile('README.md',';')
    exec ':tabnew ' . s:path1
endfunction
command Err call Err1()

以下是接受可选参数的函数示例:

function! Err1(...)
    if len(a:1) > 0
      let l:path = a:1
    else
      let l:path = 'README.md'
    end
    let l:file = findfile(l:path,'.,**')
    if len(l:file) > 0
      exec ':vsp ' . l:file
    else
      echom 'File not found: ' . l:path . ' ' . l:file
    end
endfunction
command -nargs=* Err call Err1('<args>')

另一个选择是将set path=.,**添加到.vimrc中,然后只使用标准&#34;文件&#34;命令,如:find bld.log