Às vezes, preciso mover o Windows para uma guia já existente e fiquei imaginando se havia um atalho de comando / teclado que poderia fazer isso. Sei que posso fechar a janela, alternar para a guia e abri-la em uma nova divisão, mas fiquei pensando se havia uma maneira mais curta de fazer isso. Observe que eu quero movê-lo para uma guia existente , não para uma nova guia, como <C-w>T
faz.
vim-windows
tabbed-user-interface
EvergreenTree
fonte
fonte
Respostas:
Embora existam comandos para mover janelas existentes na página da guia atual (isto é, afetem o layout da janela girando, redimensionando e movendo), não há comandos para mover uma janela para outra guia.
Como uma janela é apenas uma viewport para um buffer carregado, você deve:
:close!
a janela.:sbuffer
o número do buffer para reabri-lo.Você perderá todas as opções específicas da janela com isso. Você também pode salvar e restaurar aqueles em um script.
fonte
:b ab
(complete o restante da guia)ab
são apenas letras aleatórias, substitua pelo início do nome do arquivo desejado.:b
O preenchimento de guias teve um desempenho muito bom para mim; geralmente, ele pode encontrar o buffer de origem correto com base em apenas uma letra eTab
pressionamentos de tecla 1-2 .O benefício dessa abordagem sobre o de Ingo é a falta de notar ou lembrar de nada, o que significa menos carga cognitiva. Nome de arquivo que você já conhece de qualquer maneira.
fonte
Os dois comandos definidos abaixo movem todos os buffers da guia à direita para a guia atual e feche a guia à direita.
Mtabsp
move-os dividindo horizontalmente eMtabvsp
divididos verticalmente. Você precisa mover a guia mesclada antes de usar os comandos. Use+tabm
,-tabm
ou<n>tabm
.Configuração
Adicione o script vim abaixo ao seu
vimrc
:Detalhes técnicos
A função Mtab recebe um parâmetro
vert
. Determina se a guia atual é dividida horizontal ou verticalmente.O resultado desejado é alcançado com as seguintes etapas:
Se nossa guia atual for a última, os comandos serão ignorados.
fonte
Se for um buffer de arquivo (não funcionará para buffers de rascunho, etc.), você pode:
:let @f=@%
ENTER - na janela de origem;:echo @f
:e␣
Ctrl-RfENTERNota importante: a etapa final não funcionará corretamente se o caminho contiver espaços ou alguns caracteres especiais! :-( Como solução alternativa, o comando a seguir, um pouco mais longo, deve funcionar para caminhos com espaços (embora ainda possa falhar em alguns outros caracteres especiais):
:e␣"
Ctrl-Rf"
ENTER(ou seja, citando o resultado de Ctrl-R, f )
Inspirado nas respostas de lkraav e ingo-karkat .
fonte