Как переместить существующее окно на новую вкладку?


151

Есть ли способ взять существующее окно (разделить) и поместить его в новую вкладку?


Если вы когда-нибудь вернетесь к этому вопросу, пожалуйста, измените принятый ответ, ответ DrAI гораздо более правильный, чем ответ от Mykola.
17

Ответы:


261

Как и ранее предложенный :tabeditподход, более быстрый способ сделать это - (в обычном режиме) нажать Ctrl- W Shift- T. Ctrl-W - это общий префикс для широкого спектра команд управления окнами.

Видеть:

:help Ctrl-W_T
:help Ctrl-W

3
Обратите внимание, что help Ctrl-W_Tвы переходите к справочной записи Ctrl-W_t(в нижнем регистре), однако дальше по странице находится Ctrl-W_Tзапись (с заглавной буквой T), в которой говорится «Переместить текущее окно на новую вкладку…»
Рабарберски,

1
@DrAl, а как нам переместить окно новой вкладки в разделенное окно?
Рамиз Уддин

@RamizUddin Нет простого способа сделать это (так как неясно, на какое окно вы хотите разделиться). Тем не менее, вы можете узнать номер буфера для вашей текущей вкладки с :echo bufnr("")помощью и с помощью этого номера вы можете разделить окно с помощью :sp #3или :sb 3(при условии, что число было 3). Вы можете придумать некоторые сопоставления или функции, чтобы упростить это.
DrAl

1
Как переместить буфер на новую вкладку, сохраняя его состояние отмены / повтора. Другими словами, я не хочу открывать тот же файл на новой вкладке, я хочу буквально переместить буфер на новую вкладку, чтобы историю изменений можно было использовать на новой вкладке. Если нет способа сделать это по умолчанию, могу поспорить, что можно создать плагин, который добавляет новый ярлык для этого, который записывает историю отмен в файл подкачки для нового буфера.
trusktr

2
@trusktr Я полагаю, что открытие буфера в новой вкладке :sbсработало бы, но в последних версиях Vim (> = 7.3) вы также можете использовать постоянную отмену, установив, set undodir=/path/to/dirгде / path / to / dir - это каталог, который вы используете. создан для этой цели, а затем set undofile. Это позволит вам выйти из vim, а затем перезапустить и сохранить состояние отмены / повтора.
DrAl

103

Пытаться

:tabedit %<CR>

3
Просто любопытно, почему вы включили <CR> с этим.
Швейцария,

17
По той же причине я включил ":". Это полная комбинация клавиш vim в обычном режиме, и вы можете использовать ее в «nnoremap» и «nmap»
Николай Голубев

6
Это работает так же, за исключением того, что оно клонирует / дублирует окно на новую вкладку, а не закрывает его сначала, а затем открывает на новой вкладке. Не так уж и важно. Просто что-то, о чем нужно знать.
A-Dubb

6
Это не перемещает буфер на новую вкладку, он просто открывает тот же файл на новой вкладке, но у вас не будет истории отмен /
повторов

5
C-w Tболее быстрый способ сделать то же самое
Dylanthepiguy

3

Это перемещает самый новый буфер в новую вкладку и восстанавливает предыдущий буфер в текущей вкладке. Я использую это после перетаскивания нового файла в мой Gvim

:sbp |wincmd p| wincmd T

Вы можете сопоставить это так с Ctrl-Backspace

:nnoremap <C-BS> :sbp<bar>wincmd p<bar>wincmd T<CR>

это особенно хорошо работает с

:set switchbuf=usetab

0

Я использовал это, которое дает вам две функции, которые могут быть связаны с парой горячих клавиш или команд, и которые работают довольно интуитивно. Я уверен, что он предлагает поведение даже более дружелюбное, чем, например Ctrl-W_T.

Например, когда несколько окон открыты на нескольких вкладках, использование этой функции позволяет вам специально переместить текущее окно на следующую или предыдущую вкладку, а если вы перемещаете что-либо до первой вкладки или после последней вкладки, то она поворачивается в совершенно новую вкладку.

Это означает, что если у вас есть 2 вкладки, каждая из которых имеет одно окно, то перемещение окна первой вкладки вправо объединит его со второй вкладкой, чтобы получить одну вкладку с двумя окнами. Я не знаю, насколько запутанной является эта операция для достижения с помощью традиционных команд.

Это означает, что одна пара команд перемещения позволяет как перемещать окна вокруг вкладок, разбивать окна на вкладки (выдвигая окно до конца) и объединять отдельные вкладки в окна внутри одной вкладки, почти все Вы могли бы хотеть, кроме позиционного расположения (это отдельная тема и для которой хорошо работают встроенные команды Ctrl-W+ Shift-HJKL).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.