Если я использую:
:tabedit file1 file2
Я получил:
E172: Only one file name allowed
Есть ли способ использовать :tabedit
несколько имен файлов? Или другой способ открыть несколько вкладок одновременно?
tabbed-user-interface
Мартин Турной
источник
источник
:args *.c | tab all
. Другой вопрос более популярен, чем этот, так что хорошо бы связать его.Ответы:
Учитывая проблемы и сложность моего другого ответа с использованием «встроенного» способа путем изменения списка аргументов, я добавил собственную небольшую функцию для этого:
Теперь вы можете использовать
:Tabedit *.vim
. Эта функция расширит все шаблоны сглаживания и выполнит:tabedit <f>
для каждого файла. Вы можете добавить столько путей, сколько хотите, например, все это работает:Ну и так далее ...
Я положил это в небольшой globedit.vim плагин, который также содержит команды для
:Edit
,:Split
и т.д.источник
[<f-args>]
вместо"<args>"
- таким образом,pattern
параметр будет List (массив), и вам не придется разбивать строку вручную. (2) Передайте ненулевое значение в качестве третьего аргумента, чтобыglob()
он возвращал список. Тогда вы также можете избежать ручного разделения. Вам нужно будет пройти в0
качестве второго аргумента , чтобы пропустить его , не влияя на поведение:glob(l:p, 0, 1)
.Насколько я знаю, единственный встроенный способ сделать это:
Во-первых,
: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
Вместо этого вы можете использовать команду, например:или:
источник
:args *.vim
? По крайней мере, он ведет себя так же, и:help next_f
документирует это как то же самое ...Из командной строки вы можете использовать:
И если вы забыли использовать
-p
еще вы можете использоватьКстати, не забывайте, что переменная
tabpagemax
(значение по умолчанию 10) ограничивает количество вкладок, которые вы можете открыть таким образом.источник
На самом деле вы можете открывать новые вкладки и сохранять свои текущие вкладки без написания новых функций (см. Этот ответ по переполнению стека ):
Вы можете открыть новую пустую вкладку (
:tabe
), прежде чем сделать это, потому что первый файл откроется в текущей вкладке. Кроме того, дополнительная пустая вкладка будет оставлена открытой (см.,:help argdo
Чтобы понять, почему).источник
:tabnew | args file1 file2 | argdo tabe | tabdo syntax on
вам нужно нажать Enter, чтобы очистить приглашение, и набрать,:close
чтобы удалить последнее ( пустой) вкладка ... это очень много печатать, и оно того стоит, если вы открываете много вкладок (для 2 или 3 файлов, просто:tabe
дважды использовать было бы быстрее).