如何让 vim 同时在标签页中打开多个文件

如何让 vim 同时在标签页中打开多个文件

是否可以让 vim 在选项卡中打开多个文件,类似于命令args <path>将多个文件打开到缓冲区的方式?

执行类似的操作:tabe ./*会导致错误“E77:文件名太多”,即使文件数量小于属性中设置的值tabpagemax

(我相信该vim -p <files>选项将在选项卡中打开,但我希望找到一种在 vim 已打开时执行此操作的方法。)

答案1

:tab all

将在各个选项卡中打开 Vim 参数列表中的所有文件。参数列表最初设置为启动 Vim 时在命令行中给出的文件名列表。可以使用:args和相关命令更改列表。请参阅

:help :all
:help argument-list

例子:

:args *.c
:tab all

将在单独的选项卡中打开当前目录中的所有 .c 文件。

答案2

实际上,您可以打开新选项卡并保留当前选项卡,而无需编写新函数。请参阅 Stack Overflow 上的以下答案:https://stackoverflow.com/a/11430615/200234

:args file1 file2 | argdo tabe

您可能需要:tabe在执行此操作之前打开一个新的空白选项卡 ( ),因为第一个文件将在当前选项卡中打开。此外,还会保留一个额外的空白选项卡(请参阅:help argdo以了解原因)。

答案3

要在新选项卡中打开文件而不替换已打开的参数或选项卡:

:argadd *.c | tab all

评论中提到了这一点,但我认为值得有自己的答案。

另外,要在子目录中搜索文件:

:argadd code/**/*.c | tab all

答案4

我映射了@Mihai Capotă 解决方案,为当前文件添加了自动更改目录。将此行添加到 $HOME/.vimrc 文件:

nnoremap <C-S-t> :cd<Space>%:p:h<CR>:tabe<CR>:args<Space>*.html<Space>\|<Space>argdo<Space>tabe<Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left>

代码解释:

<C-S-t>

映射到 Crtrl-Shit-T(例如 FireFox 中 Ctrl-T 为新标签页)

:cd<Space>%:p:h<CR>

将目录更改为 VIM 中打开的当前文件目录,阅读: https://vim.fandom.com/wiki/Set_working_directory_to_the_current_file

:tabe<CR>

阅读@Mihai Capotă 解决方案

:args<Space>*.html<Space>\|<Space>argdo<Space>tabe

读相同

<Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left>

将光标移至星号

改进措施:

  1. 当前标签将为空白(只需按 Ctrl-Wq 或 :q 关闭即可)。理想情况下,此标签应自动关闭(也从缓冲区关闭)。
  2. 如果您记得的话,转到上一个标签可能很容易,例如,如果它是第一个标签,则只需按 1gt 或 :tabr。理想情况下,转到上一个应该是自动的。

PD:这可能是一个评论,而不是一个解决方案,如果是这样,那么请评论它,我不能。

相关内容