O padrão do Vim é abrir apenas uma janela para o arquivo que você irá editar.
Contudo, se houver necessidade, é possível abrir várias janelas, dentro de uma única sessão do editor, cada qual com o conteúdo de um arquivo.
Neste post vou mostrar como realizar as seguintes tarefas:
- Abrir o Vim, já com múltiplas janelas abertas, cada qual com um arquivo.
- Dentro de uma sessão do Vim, abrir novas janelas para abrigar novos arquivos dentro.
- Se mover entre as janelas.
Veja alguns exemplos de que trabalhar com múltiplas janelas pode facilitar sua vida:
- Com este recurso, é fácil aplicar a mesma formatação de um arquivo em vários outros, pois ele permite observar o modelo na mesma tela.
- Copiar e colar (inclusive através do mouse/touchpad) texto entre múltiplos arquivos.
- Manter um arquivo visível, para referência, enquanto trabalha em outro.
- Fazer comparações entre arquivos.
Isto posto, vamos ao que interessa!
Como iniciar o Vim com múltiplas janelas abertas, cada qual com um arquivo
Você pode enfileirar arquivos, na linha de comando, para cada um abrir em uma janela própria, dentro do Vim, com o uso da opção ‘-o’
segue um exemplo:
vim -o arquivo1.txt arquivo2.txt
O comando, acima, irá abrir uma sessão do Vim com uma janela ocupada por “arquivo1.txt” e outra por “arquivo2.txt”.
Se um dos arquivos não existir, o Vim irá criar um em branco com o nome dado.
Como comportamento padrão, o Vim abre os arquivos organizados horizontalmente, um sobre o outro.
É possível determinar também exatamente quantas janelas serão abertas, indicando um número para a opção ‘-o’:
vim -o3 arquivo1.txt arquivo2.txt
Neste caso, a terceira janela será aberta com um arquivo em branco (esperando conteúdo).
Como ajustar os tamanhos das janelas
Você pode alterar a altura da janela atual com o comando :set winheight=x
, em que ‘x’ é o valor referente às linhas de altura que a janela passará a ter.
Quando você altera a geometria de uma janela, o Vim, muda a das outras janelas automaticamente.
Em um ambiente com janelas dispostas lado a lado, é possível editar a largura com o comando :set winwidth=x
.
Como abrir novas janelas dentro de uma sessão do Vim
Use o comando :split
para dividir a janela atual.
A nova janela será uma cópia da atual — ou seja, tudo o que você escrever em uma, será atualizado na outra.
Apenas experimente.
E, se eu quiser que a nova janela fique ao lado da atual?
Para posicionar a nova janela (clone) do lado direito da atual, use o comando :vpslit
(vertical split ou divisão vertical).
Se você quiser editar um arquivo na nova janela, indique o nome dele ao lado do comando split. Por exemplo:
:vsplit hello.c
As opções do comando :split no Vim
Os comandos – :split
e :vsplit
– aceitam algumas opções e parâmetros.
Basicamente a sintaxe é a seguinte:
:[n]split [++opt] [+cmd] [nome-do-arquivo]
… em que:
- n — estabelece a quantidade de linhas (altura) da nova janela, posicionada no topo.
- opt — passa opções para o comando split, que precisam ser precedidos pelos sinais ++.
- cmd — precedido por um único sinal +, passa um comando a ser executado em relação à nova janela.
- nome-do-arquivo — especifica o nome do arquivo a ser editado dentro da nova janela.
Veja outro exemplo:
:vsplit ++fileformat=unix hello.c
Abre uma janela ao lado, usando o formato UNIX de edição e dentro dela o arquivo hello.c.
Você também pode usar os comandos :new
e :vnew
para abrir novas janelas horizontais e verticais, respectivamente.
Os comandos ‘new’ aceitam os mesmos parâmetros dos ‘split’.
Para abrir uma nova janela com um arquivo dentro, no modo read only (somente leitura), use o comando :sview nome-do-arquivo
.
Para fechar a janela atual, use o mesmo comando que usa para fechar um arquivo. Por exemplo, :q!
(sair sem gravar) ou :wq
(gravar e sair).
Atalhos de teclado para dividir e criar novas janelas
Você também pode criar/fechar janelas através de atalhos de teclado, usando a tecla Ctrl (^).
Os atalhos de teclado do Vim, para comandos relacionados às janelas (windows) começam com ‘W’.
Veja alguns:
Ctrl + W + S
— divide a janela atual. Por padrão, a nova janela clona a atual.
Ctrl + W + N
— Cria uma nova janela dentro da sessão atual, com um arquivo novo e sem nome.
Ctrl + W + V
— Faz um split vertical
Vale ressaltar que Ctrl + Shift + W
é usado para fechar a janela do GNOME-Terminal.
Como o terminal tem prioridade, ele irá capturar esta sequência, antes do programa que está sendo executado dentro dele.
Se você isto estiver causando problemas para você, é mais fácil alterar o atalho de teclado do GNOM-Terminal.
Como se mover entre as janelas abertas dentro do Vim
As principais teclas de movimentação dentro das janelas obedecem a 2 princípios básicos (que você já deve conhecer...):
- Como se referem a janelas (windows), elas começam com o 'Ctrl + W' — tal como mencionei antes.
- Usam as teclas de movimentação padrão do Vim.
Segue a relação dos atalhos de teclado para "pular" entre janelas no Vim:
CTRL + W + ↓
,CTRL + W + J
— Move o cursor para a próxima janela abaixo. Note que o comando não é cíclico, ou seja, quando chegar à última janela, embaixo, ele para de ter efeito.CTRL + W + ↑
,CTRL + W + K
— Move para a janela de cima.CTRL + W + ←
,CTRL + W + H
— Move para a janela à esquerda.CTRL + W + →
,CTRL + W + L
— Move para a janela à direita.CTRL + W + W
— Move o cursor para a próxima janela, ao lado ou embaixo. Já este comando é cíclico, ou seja, ele não para e recomeça após chegar à última janela, voltando para a primeira, que estava selecionada, quando você começou.CTRL + W + T
— Move o cursor direto para a janela mais próxima do canto superior esquerdo (topo).CTRL + W + B
— Move o cursor direto para a janela mais próxima do canto inferior direito.CTRL + W + P
— Move o cursor para a janela previamente acessada.
Tenha em mente que você precisa estar no modo comando, para poder se mover entre as janelas com estas teclas.