How do I make vim open all files matching a pattern in different tabs?

后端 未结 4 675
没有蜡笔的小新
没有蜡笔的小新 2021-01-01 14:11

In a given working directory, if I do

:tabe **/test*.py

vim complains with E77: Too many file names. What if I wa

相关标签:
4条回答
  • 2021-01-01 14:21

    To map it

    nmap <c-d> :args **/*.tpl<bar>execute 'argdo tabe %'<bar>syntax on<cr>
    

    But still it displays list of files, you have to press enter few times (depending of number of files).

    0 讨论(0)
  • 2021-01-01 14:23

    You could use the args list and argdo like so:

    :args **/test*.py
    :argdo tabe %
    

    However, the syntax event is turned off by argdo (to speed up the normal use case), so the files will be loaded without syntax at first. You could follow it up with a :syntax on to force the syntax event on all loaded buffers. Compressed into one line (need to wrap argdo in execute so it doesn't absorb the following |):

    :args **/test*.py | execute 'argdo tabe %' | syntax on
    

    Alternately, you can open vim from the command line via:

    vim -p **/test*.py
    

    But that will max out at 10 tabs.

    0 讨论(0)
  • 2021-01-01 14:27

    This functionality can be included as a command in your .vimrc file:

    "open all files in seperate tabs
    command -nargs=1 OpenAll call <SID>openAll(<f-args>)
    function! s:openAll(dir)
        execute 'args ' . a:dir
        silent argdo tabe %
        syntax on
    endfunction
    

    With this function running :OpenAll **/*.py from vim will quickly open all files into new tabs

    0 讨论(0)
  • 2021-01-01 14:30

    You can use the following:

    :next **/test*.py
    

    It opens all the files.

    0 讨论(0)
提交回复
热议问题