Иногда мне нужно переместить окна в уже существующую вкладку, и мне было интересно, есть ли комбинация клавиш / клавиш, которая могла бы сделать это. Я знаю, что могу закрыть окно, переключиться на вкладку, а затем открыть ее в новом разделе, но мне было интересно, есть ли более короткий способ сделать это. Обратите внимание, что я хочу переместить его на существующую вкладку, а не на новую вкладку, как это <C-w>T
делается.
vim-windows
tabbed-user-interface
Вечнозеленое дерево
источник
источник
Ответы:
Хотя есть команды для перемещения существующих окон на текущей вкладке (т. Е. Для изменения расположения окна путем поворота, изменения размера и перемещения), нет команд для перемещения окна на другую вкладку.
Поскольку окно - это просто окно просмотра в загруженном буфере, вам необходимо:
:close!
окно.:sbuffer
номер буфера, чтобы снова открыть его.Вы потеряете любые специфичные для окна опции. Вы также можете сохранить и восстановить их в скрипте.
источник
:b ab
(вкладка завершить остальное)ab
просто случайные буквы, замените начало нужного вам имени файла.:b
Завершение табуляции очень хорошо для меня, оно обычно может найти правильный исходный буфер на основе только одной буквы и 1-2Tab
нажатий клавиш.Преимущество такого подхода по сравнению с Ingo заключается в отсутствии заметки или запоминания чего-либо, что означает меньшую когнитивную нагрузку. Имя файла вы уже знаете в любом случае.
источник
Две команды, определенные ниже, перемещают все буферы с правой вкладки на текущую вкладку, а затем закрывают правую вкладку.
Mtabsp
перемещает их путем разделения по горизонтали иMtabvsp
разделения по вертикали. Вам необходимо переместить объединенную вкладку перед использованием команд. Используйте+tabm
,-tabm
или<n>tabm
.Настроить
Добавьте приведенный ниже скрипт vim к себе
vimrc
:Технические детали
Функция Mtab получает один параметр
vert
. Он определяет, будет ли текущая вкладка разделена по горизонтали или вертикали.Желаемый результат достигается с помощью следующих шагов:
Если наша текущая вкладка является последней, команды игнорируются.
источник
Если это файловый буфер (не работает для чистых буферов и т. Д.), Вы можете:
:let @f=@%
ENTER - в исходном окне;:echo @f
:e␣
Ctrl-RfENTERВажное примечание: последний шаг не будет работать правильно, если путь содержит пробелы или некоторые специальные символы! :-( В качестве обходного пути следующая, немного более длинная команда должна работать для путей с пробелами (хотя она может все еще не работать для некоторых других специальных символов):
:e␣"
Ctrl-Rf"
ENTER(то есть, цитируя результат Ctrl-R, f )
Вдохновлен ответами от Икраав и Инго-Каркат .
источник