Como abrir múltiplas janelas no editor Vim

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:

  1. Abrir o Vim, já com múltiplas janelas abertas, cada qual com um arquivo.
  2. Dentro de uma sessão do Vim, abrir novas janelas para abrigar novos arquivos dentro.
  3. Se mover entre as janelas.

Veja alguns exemplos de que trabalhar com múltiplas janelas pode facilitar sua vida:

  1. 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.
  2. Copiar e colar (inclusive através do mouse/touchpad) texto entre múltiplos arquivos.
  3. Manter um arquivo visível, para referência, enquanto trabalha em outro.
  4. 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.
vim multiplas janelas

É 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.
vim split window

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).
Vim vertical split

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.
gnome terminal atalhos

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...):

  1. Como se referem a janelas (windows), elas começam com o 'Ctrl + W' — tal como mencionei antes.
  2. 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.

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia. Fã de séries, como "Rick and Morty" e "BoJack Horseman". Me siga no Twitter e vamos trocar ideias!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.