在给定的工作目录中,如果我执行以下操作:
:tabe **/test*.py
vim
报错 E77: Too many file names
。如果我想让它打开每个匹配的文件并在单独的标签页中打开,该怎么办?肯定有方法可以做到,但我找不到。
args
列表和argdo
来实现,例如::args **/test*.py
:argdo tabe %
然而,argdo
关闭了语法事件(为了加速正常使用情况),因此文件在最初加载时将没有语法。 您可以跟随 :syntax on
命令,强制对所有已加载的缓冲区开启语法事件。 将其压缩到一行中(需要在 execute
中包装 argdo
,以便它不吸收后续的 |
)。
:args **/test*.py | execute 'argdo tabe %' | syntax on
或者,您可以通过命令行打开vim:
vim -p **/test*.py
但是那将会最多达到10个选项卡。
:tabeall **/test*.py
这样的操作呢? - Martin Blechset tabpagemax=100
将允许 Vim 打开 100 个标签页。 - sixtyfootersdude您可以使用以下内容:
:next **/test*.py
它打开了所有的文件。
nmap <c-d> :args **/*.tpl<bar>execute 'argdo tabe %'<bar>syntax on<cr>
但它仍然显示文件列表,您需要按下几次回车键(取决于文件数量)。
nmap <c-d> :args **/*.tpl ^M argdo tabe % ^M syntax on ^M
。使用 Control-Q 来输入 ^M (换行)的字面值。但仍会显示文件列表。 - Josiah Yoder这个功能可以作为一个命令包含在你的.vimrc
文件中:
"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
使用这个函数,从vim中运行:OpenAll **/*.py
将快速打开所有文件到新标签页。
其他答案对我都不起作用,但这个可以:
find <path> -iname <pattrn> | xargs -o vim -p