Когда я открываю vim
с несколькими файлами ( vim f1 f2 ...
), как я могу открыть их на вкладках напрямую, без использования -p
?
Я пытаюсь отделить поведение оболочки от поведения vim, удалить vim
псевдонимы на основе и т. Д. Вот почему я предпочел бы не использовать псевдонимы и т. Д. (Следовательно, нет -p
).
Я уверен, что этот вопрос был задан на нескольких сайтах SE (например, на SO ). Тем не менее, я не в состоянии судить, что было бы лучшим способом сделать это, поэтому я также надеюсь на примечание о том, почему предлагаемый метод хорош.
Для конкретной ссылки SO:
принятый ответ делает
tabpagemax=9999
. Назовите это личным уклоном, но я вижу, что лимит установлен на большое число, и я думаю, что что-то не так (то, что я чувствовал бы, если бы увиделchmod 777
).:au VimEnter * set tabpagemax=9999|sil tab ball|set tabpagemax&vim
другой ответ приводит к открытию дополнительной пустой вкладки, но при этом гораздо более кратким.
:autocmd VimEnter * argdo tabedit
Я надеюсь на ответ, в котором не открыта дополнительная вкладка и не установлен лимит для большого значения (или объясните, почему это не так уж плохо).
:qa
по привычке. Если это единственное преимущество, я бы пошел с другим, так как это кажется проще.Ответы:
После некоторых экспериментов я обнаружил, что это лучший способ; он должен вести себя так же, как
vim -p
:Сначала
tab all
открываются все записи в списке аргументов (:args
) на вкладке. Список аргументов - это список файлов, которые вы передали Vim при запуске. Иtabfirst
убедитесь, что первая вкладка ориентирована, а не последняя (это необязательно).Мы не делаем ничего из этого, если
&diff
установлено; если это так, мы используемvimdiff
илиvim -d
, где мы хотим иметь 2 окна, а не 2 вкладки.В этом ответе я также написал немного о списке аргументов и
tab all
который может представлять интерес.Некоторые заметки о других решениях:
tab ball
открывает вкладку для каждой записи в списке буферов , а не в списке аргументов. Проблема заключается в том, что список буфера может быть сохранен в файле viminfo при выходе и восстановлен при запуске (если%
он'viminfo'
включен, по умолчанию не включен). Так что, если вы просто напечатаете,vim
он откроет эти файлы. Я считаю, что это нежелательно, хотя я могу представить, что некоторые люди находят это полезным; так что используйте то, что вы предпочитаете.set tabpagemax=9999
не требуется; по умолчанию10
, и это должно быть хорошо. Вы можете увеличить это в своем vimrc, если хотите больше, но9999
это глупое число. Если вы используете-p
, вы также получаетеtabpagemax
вкладки. Так что это должно уважать это. Помните, что это откроет (прочитает) буфер при запуске, так что это довольно медленно.autocmd VimEnter * argdo tabedit
это точно такой же способ сказатьtab all
. Однако исходный буфер не очищается, поэтому у вас остается дополнительная вкладка (tab all
заменяет все вкладки). Чтобы это исправить, вам нужен обходной путь в ответе Джоша Петри.источник
Я думаю, что добавление чего-то подобного к вашему
.vimrc
может решить ваши проблемы (заметьте, однако, что я на самом деле не использую это и выполнил только минимальное тестирование, в некоторых случаях это может делать странные вещи):Как вы заметили, у вас
argdo tabedit
останется пустая дополнительная вкладка. Таким образом, вы можете просто закрыть эту вкладку автоматически. Однако вы не можете просто вызватьtabclose
unchecked, иначе vim выдаст вам ошибку, когда вы запустите его без аргументов или одного файла («вы не можете закрыть последнюю вкладку»). Вместо этого проверьте, является ли общее количество вкладок больше одной (именно это и$
вызываетtabpagenr
возврат), и только после этого вам нужно закрыть последнюю вкладку.Тем не менее, я чувствую, что стоит отметить, что вкладки vim не совсем похожи на вкладки других редакторов , и об этом следует помнить при рассмотрении вопроса об использовании вкладок в рабочем процессе (вы, кажется, знаете об этом, но я хочу сделать точку в пользу будущих читателей, которые могут не так, чтобы они могли принимать свои собственные решения).
источник