如果我使用:
:tabedit file1 file2
我得到:
E172: Only one file name allowed
有什么办法可以使用:tabedit
多个文件名?还是另一种同时打开多个标签的方式?
:args *.c | tab all
。另一个问题比这更受欢迎,因此也很好地链接它。
如果我使用:
:tabedit file1 file2
我得到:
E172: Only one file name allowed
有什么办法可以使用:tabedit
多个文件名?还是另一种同时打开多个标签的方式?
:args *.c | tab all
。另一个问题比这更受欢迎,因此也很好地链接它。
Answers:
在我的其他答案中,通过修改参数列表使用“内置”方式来解决问题和复杂性,我添加了自己的小函数来执行此操作:
" Open multiple tabs at once
fun! OpenMultipleTabs(pattern_list)
for p in a:pattern_list
for c in glob(l:p, 0, 1)
execute 'tabedit ' . l:c
endfor
endfor
endfun
command! -bar -bang -nargs=+ -complete=file Tabedit call OpenMultipleTabs([<f-args>])
您现在可以使用:Tabedit *.vim
。此功能将扩展所有的遍历模式,并对:tabedit <f>
每个文件执行。您可以根据需要添加任意多个路径名,例如,所有这些都可以使用:
:Tabedit file.rb
:Tabedit *.c
:Tabedit file1.py file2.py _*.py
:Tabedit /etc/hosts file{1,2}.sh
好吧,依此类推...
我把这个有点globedit.vim插件,其中也包含命令:Edit
,:Split
等等。
[<f-args>]
而不是"<args>"
-这样,该pattern
参数将是一个List(数组),您将不必手动拆分字符串。(2)传递非零作为第三个参数,glob()
以使其返回列表。然后,您也可以避免手动拆分。您需要通过0
作为第二个参数来跳过它,而不会影响行为:glob(l:p, 0, 1)
。
据我所知,唯一的内置方法是:
:args *.vim
:tab all
首先,:args
将替换参数列表。参数列表列出了打开Vim时使用的文件。因此,vim file1 file2
意味着参数列表包含file1
和file2
。
我们可以在运行时修改它,Vim会为参数列表中的每个新条目打开一个缓冲区。
请参阅 :help argument-list
以获取更多信息。
该:all
命令为参数列表中的每个条目打开一个窗口,该:tab
命令执行一个命令,并在给定的命令打开一个新窗口时打开一个新选项卡。
注意事项
此方法有一些警告。
首先,不检查重复项,因此您可以在同一缓冲区中拥有2个或更多选项卡。
但是最大的问题是它将所有选项卡替换为参数列表中的选项卡。因此您丢失了所有现有标签。
您可以使用稍微避开这个:argadd *.vim
以补充而不是取代它的参数列表; 但命令,如:edit
或:tabedit
根本不改变参数列表,除非你将它们添加到参数列表,你会失去这些标签(你仍然有他们在缓冲区列表,虽然)。您可能也不想在选项卡的参数列表中打开所有内容,也许只是想打开2个文件作为其他选项卡。
您可能可以通过首先将所有当前打开的选项卡添加到参数列表中来使它稍微好一点(我真的无法使用),但这仍然远远不够。如果选项卡具有2个或更多窗口,它将仍然对其进行修改...
:argdo tabedit %
,这将为每个参数打开一个新选项卡。从一个标签开始并打开n个新标签自然会让您留下n + 1个标签。:tab all
是一个更好的解决方案。
您可以改用:next
command,例如:
:n file1 file2
要么:
:n *.txt
:args *.vim
?至少,它的行为相同,并:help next_f
记录为相同...
实际上,您可以打开新选项卡并保留当前选项卡,而无需编写新功能(请参见Stack Overflow上的以下答案):
:args file1 file2 | argdo tabe
您可能需要先打开一个新的空白标签(:tabe
),因为第一个文件将在当前标签中打开。同样,一个额外的空选项卡将保持打开状态(请参阅:help argdo
以了解原因)。
:tabnew | args file1 file2 | argdo tabe | tabdo syntax on
您需要按Enter清除提示,然后键入:close
以删除最后一个(空)标签...这是一个非常繁琐的输入,只有在您打开许多标签时才值得(对于2或3个文件,只需使用:tabe
两次会更快)。