Предположим, я начал vim так:
vim foo bar
Теперь я решаю, что я хочу, чтобы каждый из этих файлов находился на отдельной вкладке. Есть ли способ сделать это без выхода из vim и добавления опции -p
в мою командную строку?
Вы хотите открыть буфер в новой вкладке?
Разделите экран (Ctrl-W s), откройте окно и нажмите Ctrl-W T
Когда вы запускаете vim таким образом, вы не получаете клиента vim, текстовый редактор использует приглашение терминала или cmd - два файла находятся в двух разных буферах. Используйте :ls
для вывода списка буферов:
:ls
1 %a "foo" line 6
2 "bar" line 0
% A является активным буфером. Вы можете использовать :b2
для переключения на буфер 2 или использовать :bn
для перехода к следующему или :bp
для предыдущего. Я предпочитаю (CTRL-W v) разделять окна по вертикали, а не (CTRL-W s), которая разделяется по горизонтали.
Если у вас загружено 2 файла и нет вкладок (пока), вы можете :tabnew
и в новой вкладке набрать :b2
Если вы хотите, чтобы буферы всегда загружались в свои собственные вкладки, ознакомьтесь с этой статьей.
Лучший способ выполнить то, о чем просил OP, это:
:bufdo tab split
Это откроет каждый буфер в отдельной вкладке, независимо от того, сколько их. Если вы используете это много, это легко сделать в вашем .vimrc. В сочетании с чем-то вроде этого маленького плагина vim, следующие элементы откроют каждый элемент из :grep
(или :Ack) на собственной вкладке:
:grep foo
:QuickFixOpenAll
:bufdo tab split
Конечно, при обращении к плагину было бы достаточно легко изменить его, чтобы открыть содержимое списка быстрых исправлений непосредственно во вкладках.
ОБНОВЛЕНИЕ: я действительно должен дать комментарий к комментарию ggustafsson ниже. Это, несомненно, лучший ответ на много и красиво иллюстрирует тенденцию Vim в стороне композиционного поведения. Предложение таково:
:tab sball
Стоит посмотреть справку Vim для :tab и :sball, чтобы увидеть, что здесь происходит.
Вы можете сделать это, комбинируя команду tab
с командой sb[uffer]
.
Сначала вам нужно знать идентификатор буфера, который вы хотите открыть в новой вкладке. Вы можете узнать это с помощью команды ls
:
:ls
1 %a "foo" line 1
2 "bar" line 0
Получив идентификатор, вы можете легко открыть его в новой вкладке, используя:
:tab sb 2
Команда sb
обычно открывает данный буфер в новом разделенном окне, но вместо этого команда tab
открывает его в новой вкладке.
Команда tab
также позволяет указать, где в списке вкладок должна быть создана новая вкладка. Например :0tab sb 2
приведет к тому, что новая вкладка 'bar' появится в начале списка, а не после текущей вкладки.
1. Откройте два файла в Vim.
$ vim foo bar
2. Проверьте количество буферов.
:ls 1%a "foo" 2 "bar"
3. Объедините две команды: tabnew
чтобы открыть новую вкладку, и b <buffer_number>
чтобы загрузить нужный буфер во вкладке.
:tabnew | b 2
Просто добавьте кое-что, что другие парни не упомянули.
Если есть несколько окон, <C-W>T
переместит это окно на новую вкладку. Однако этот ярлык только для "Окна", а не для "буфера". Если вы предпочитаете этот стиль :sp
или <C-W>s
чтобы дублировать текущий буфер в еще одно окно, затем <C-W>T
чтобы переместить его на новую вкладку.
4 нажатия клавиш или 7 нажатий клавиш.
:tabe %
чтобы открыть новую вкладку для текущего буфера.
7 нажатий клавиш.
Если использовать плагин CtrlP, также можно использовать "CtrlPBuffer", затем с помощью сочетания клавиш <C-t>
чтобы открыть его с новой вкладкой страницы.
Этот стиль легко переключается на разные буферы.
С сочетанием клавиш "CtrlPBuffer", 4 нажатия клавиш или более.