是否可以让 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>
将光标移至星号
改进措施:
- 当前标签将为空白(只需按 Ctrl-Wq 或 :q 关闭即可)。理想情况下,此标签应自动关闭(也从缓冲区关闭)。
- 如果您记得的话,转到上一个标签可能很容易,例如,如果它是第一个标签,则只需按 1gt 或 :tabr。理想情况下,转到上一个应该是自动的。
PD:这可能是一个评论,而不是一个解决方案,如果是这样,那么请评论它,我不能。