【发布时间】:2011-03-28 23:31:39
【问题描述】:
在给定的工作目录中,如果我这样做了
:tabe **/test*.py
vim 向E77: Too many file names 投诉。如果我希望它在单独的选项卡中打开每个匹配的文件怎么办?一定有办法,但我找不到。
【问题讨论】:
-
相关:How can I open multiple tabs at once? 在 Vim SE
在给定的工作目录中,如果我这样做了
:tabe **/test*.py
vim 向E77: Too many file names 投诉。如果我希望它在单独的选项卡中打开每个匹配的文件怎么办?一定有办法,但我找不到。
【问题讨论】:
您可以像这样使用args 列表和argdo:
:args **/test*.py
:argdo tabe %
但是,argdo 关闭了语法事件(以加快正常用例),因此文件将首先在没有语法的情况下加载。您可以使用:syntax on 跟进它,以在所有加载的缓冲区上强制执行语法事件。压缩成一行(需要将argdo包裹在execute中,这样就不会吸收下面的|):
:args **/test*.py | execute 'argdo tabe %' | syntax on
或者,您可以通过以下方式从命令行打开 vim:
vim -p **/test*.py
但最多只能有 10 个标签。
【讨论】:
:tabeall **/test*.py?
set tabpagemax=100 将允许 vim 打开 100 个标签。
映射它
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(文字换行符)字符。不过仍然显示文件列表。
您可以使用以下内容:
:next **/test*.py
它会打开所有文件。
【讨论】:
此功能可以作为命令包含在您的 .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
注意,vim 可以限制标签 - 由set tabpagemax=42 更改。
另外,如果您想知道如何一次关闭所有选项卡,请使用 :qa
【讨论】: