45

Предположим, я начал vim так:

vim foo bar

Теперь я решаю, что я хочу, чтобы каждый из этих файлов находился на отдельной вкладке. Есть ли способ сделать это без выхода из vim и добавления опции -p в мою командную строку?

6 ответов6

43

Вы хотите открыть буфер в новой вкладке?

Разделите экран (Ctrl-W s), откройте окно и нажмите Ctrl-W T

26

Когда вы запускаете 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

Если вы хотите, чтобы буферы всегда загружались в свои собственные вкладки, ознакомьтесь с этой статьей.

24

Лучший способ выполнить то, о чем просил OP, это:

:bufdo tab split

Это откроет каждый буфер в отдельной вкладке, независимо от того, сколько их. Если вы используете это много, это легко сделать в вашем .vimrc. В сочетании с чем-то вроде этого маленького плагина vim, следующие элементы откроют каждый элемент из :grep (или :Ack) на собственной вкладке:

:grep foo
:QuickFixOpenAll
:bufdo tab split

Конечно, при обращении к плагину было бы достаточно легко изменить его, чтобы открыть содержимое списка быстрых исправлений непосредственно во вкладках.

ОБНОВЛЕНИЕ: я действительно должен дать комментарий к комментарию ggustafsson ниже. Это, несомненно, лучший ответ на много и красиво иллюстрирует тенденцию Vim в стороне композиционного поведения. Предложение таково:

 :tab sball

Стоит посмотреть справку Vim для :tab и :sball, чтобы увидеть, что здесь происходит.

19

Вы можете сделать это, комбинируя команду tab с командой sb[uffer] .

Сначала вам нужно знать идентификатор буфера, который вы хотите открыть в новой вкладке. Вы можете узнать это с помощью команды ls :

:ls
  1 %a   "foo"                          line 1
  2      "bar"                          line 0

Получив идентификатор, вы можете легко открыть его в новой вкладке, используя:

:tab sb 2

Команда sb обычно открывает данный буфер в новом разделенном окне, но вместо этого команда tab открывает его в новой вкладке.

Команда tab также позволяет указать, где в списке вкладок должна быть создана новая вкладка. Например :0tab sb 2 приведет к тому, что новая вкладка 'bar' появится в начале списка, а не после текущей вкладки.

6

1. Откройте два файла в Vim.

$ vim foo bar

2. Проверьте количество буферов.

:ls
  1%a "foo"
  2   "bar"

3. Объедините две команды: tabnew чтобы открыть новую вкладку, и b <buffer_number> чтобы загрузить нужный буфер во вкладке.

:tabnew | b 2
4

Просто добавьте кое-что, что другие парни не упомянули.

  • текущее окно на новую вкладку

Если есть несколько окон, <C-W>T переместит это окно на новую вкладку. Однако этот ярлык только для "Окна", а не для "буфера". Если вы предпочитаете этот стиль :sp или <C-W>s чтобы дублировать текущий буфер в еще одно окно, затем <C-W>T чтобы переместить его на новую вкладку.

4 нажатия клавиш или 7 нажатий клавиш.

  • текущий буфер для новой вкладки

:tabe % чтобы открыть новую вкладку для текущего буфера.

7 нажатий клавиш.

  • буфер для новой вкладки

Если использовать плагин CtrlP, также можно использовать "CtrlPBuffer", затем с помощью сочетания клавиш <C-t> чтобы открыть его с новой вкладкой страницы. Этот стиль легко переключается на разные буферы.

С сочетанием клавиш "CtrlPBuffer", 4 нажатия клавиш или более.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .