如何使vim在不同选项卡中打开与模式匹配的所有文件?

如何使vim在不同选项卡中打开与模式匹配的所有文件?,vim,vi,Vim,Vi,在给定的工作目录中,如果我这样做 :tabe **/test*.py vim投诉E77:文件名太多。如果我想让它在一个单独的选项卡中打开每个匹配的文件呢?一定有办法,但我找不到。您可以使用args列表和argdo如下所示: :args **/test*.py :argdo tabe % 但是,syntax事件由argdo关闭(以加快正常用例的速度),因此首先将加载不带语法的文件。您可以使用:syntax on对所有加载的缓冲区强制执行syntax事件。压缩为一行(需要将argdo包装在exe

在给定的工作目录中,如果我这样做

:tabe **/test*.py

vim
投诉
E77:文件名太多
。如果我想让它在一个单独的选项卡中打开每个匹配的文件呢?一定有办法,但我找不到。

您可以使用
args
列表和
argdo
如下所示:

:args **/test*.py
:argdo tabe %
但是,syntax事件由
argdo
关闭(以加快正常用例的速度),因此首先将加载不带语法的文件。您可以使用
:syntax on
对所有加载的缓冲区强制执行syntax事件。压缩为一行(需要将
argdo
包装在
execute
中,这样它就不会吸收以下
|
):

或者,您可以通过以下方式从命令行打开vim:

vim -p **/test*.py
但最多只能有10个标签。

来映射它

nmap <c-d> :args **/*.tpl<bar>execute 'argdo tabe %'<bar>syntax on<cr>
nmap:args**/*.tplexecute上的“argdo tabe%”语法

但它仍然显示文件列表,您必须按enter键几次(取决于文件的数量)。

您可以使用以下命令:

: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
“在单独的选项卡中打开所有文件
命令-nargs=1 OpenAll调用OpenAll()
函数!s:openAll(dir)
执行'args'。a:dir
无声阿格多表%
语法高亮
端功能

通过从vim运行此函数,可以快速将所有文件打开到新的选项卡中,非常感谢!现在,我如何将模式设置为参数,以便将脚本映射到新命令并执行操作,例如,
:tabeall**/test*.py
设置tabpagemax=100
将允许vim打开100个选项卡。如下所述,t他用@cooldoger的答案更快、更短、更容易。我想这里的问题是vim对“标签”和“缓冲区”(cf:)之间的混淆。我认为打开100个标签没有用,最好使用缓冲区,并正确地学习如何使用它们(例如cf:)或者
nmap:args**/*.tpl^M argdo tabe%^M语法在^M
上使用Control-Q键入^M(文字换行符)字符。但是仍然显示文件列表。相关:在Vim SEhow这不是正确的答案吗?非常简单!我同意这个答案更好、更简单、更快速,但问题要求“不同的选项卡”“我猜被接受的答案是好的。我不明白这是怎么做到的。如果我尝试,只会打开一个缓冲区。
"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