Existe uma maneira de pegar uma janela existente (dividir) e colocá-la em uma nova guia?
Existe uma maneira de pegar uma janela existente (dividir) e colocá-la em uma nova guia?
Respostas:
Assim como a :tabedit
abordagem sugerida anteriormente , uma maneira mais rápida de fazer isso (no modo normal) é pressionar Ctrl- W Shift- T. Ctrl-W é o prefixo geral para uma ampla variedade de comandos de manipulação de janelas.
Vejo:
:help Ctrl-W_T
:help Ctrl-W
help Ctrl-W_T
leva para a entrada de ajuda de Ctrl-W_t
(minúscula), no entanto, mais abaixo na página está a Ctrl-W_T
entrada (com T maiúsculo), dizendo "Mova a janela atual para uma nova página de guia ...."
:echo bufnr("")
e, usando esse número, pode dividir uma janela com :sp #3
ou :sb 3
(supondo que o número seja 3). Você pode criar alguns mapeamentos ou funções para simplificar isso.
:sb
funcionaria, mas com versões recentes do Vim (> = 7.3) você também pode usar desfazer persistente definindo set undodir=/path/to/dir
onde / path / to / dir é um diretório que você criado para a finalidade e depois set undofile
. Isso permitirá que você saia do vim, reinicie e mantenha o estado de desfazer / refazer.
Experimentar
:tabedit %<CR>
C-w T
é a maneira mais rápida de fazer o mesmo
Isso move o buffer mais recente em uma nova guia e restaura o buffer anterior na guia atual. Eu uso isso depois de arrastar um novo arquivo para o meu Gvim
:sbp |wincmd p| wincmd T
Você pode mapeá-lo dessa maneira para Ctrl-Backspace
:nnoremap <C-BS> :sbp<bar>wincmd p<bar>wincmd T<CR>
ele executa especialmente bem com
:set switchbuf=usetab
Eu tenho usado isso, que fornece duas funções que podem ser vinculadas a um par de teclas de atalho ou comandos, e que funciona de maneira bastante intuitiva. Tenho certeza de que oferece um comportamento ainda mais amigável do que por exemplo Ctrl-W_T
.
Por exemplo, quando várias janelas são abertas em várias guias, o uso dessa função permite mover especificamente a janela atual para a próxima ou a anterior e, se você mover algo para antes da primeira ou depois da última, será exibido em uma guia totalmente nova.
Isso significa que, se você tiver 2 guias, cada uma com uma única janela, mover a janela da primeira guia para a direita combinará com a segunda guia para resultar em uma única guia com duas janelas. Não sei o quão complicada essa operação é conseguir usando comandos tradicionais.
O que isso significa é que um único par de comandos de movimento permite mudar as janelas em torno das guias, dividir as janelas em guias (empurrando uma janela para o final) e unir guias separadas nas janelas dentro de uma única guia, praticamente tudo você poderia desejar, com falta de arranjo posicional (que é um tópico separado e para o qual os comandos Ctrl-W
+ Shift-HJKL
internos funcionam bem).