Cancelar janela dividida no Vim

231

Eu dividi minhas janelas horizontalmente. Agora, como posso voltar ao modo normal, ou seja, nenhuma janela dividida apenas uma janela sem cancelar todas as minhas janelas abertas? Eu tenho 5 e não quero "sair", só quero sair da janela dividida.

Sudeep
fonte
7
Alguma chance de você aceitar a resposta de eckes? É muito mais útil do que o atualmente aceita ...
Kyle Strand

Respostas:

288

Pressione Control+ we pressione qpara fechar cada janela de cada vez.

Atualização : considere também algumas respostas que podem ser mais úteis para você, envolvendo :on (leia abaixo) se você não quiser fazer uma janela de cada vez.

Warren P
fonte
9
Eu concordo, mas o OP não respondeu bem e não posso mudar isso sozinho.
Warren P
4
Tenho certeza de que esta é a resposta correta. Isso foi feito por mim e, se você olhar para a pergunta do op, ele não queria fechar as outras janelas abertas, apenas a recentemente dividida.
Zak
1
Não ajuda se o buffer mostrado contiver alterações não salvas. Diz que devo substituir! mas eu não sei como. Como um novato, estou perdido agora.
MusiKk
2
então salve. Você não precisa desta resposta se não souber como salvar. É possível que você nem tenha PERMISSÃO para salvar.
Warren P
1
Vindo de editores de GUI tradicionais, esse é um conceito bastante estranho. O ambiente hiddenparece ajudar. No entanto, o que eu quis dizer foi: como você adiciona um! para um atalho? É "Cw! Q", "Cw q!", "! Cw q", "C-! W q"? Eu acho que nenhum desses, mas já esqueci como criar novos buffers, então este é um exercício para o leitor.
musikk
265

Para fechar todas as divisões, eu costumo colocar o cursor na janela que será o em um LY visível e, em seguida, fazer :ono que faz a janela atual na janela LY visível. Bom mnemônico para lembrar.


Edit: :help :on me mostrou que estes comandos são os mesmos:

  • :on
  • :only
  • CTRL-w CTRL-o
  • E sim, também CTRL-W otem o mesmo efeito (como Nathan respondeu ).

Cada um desses quatro fecha todas as janelas, exceto a ativa.

eckes
fonte
8
+1 Se a outra janela contiver alterações não intencionais, :onela responderá E445: Other window contains changese não fechará a outra janela. Por exemplo, costumo criar uma nova janela e ler nele um arquivo do qual gostaria de arrancar. Nesse caso, o Vim considera a outra janela com alterações não escritas. Nesse caso, use :on!para forçar um fechamento.
Sabuncu
61

para fechar todas as janelas, exceto a atual:

CTRL+ w,o

Ou seja, primeiro CTRL+ we depois o.

Nathan Fellman
fonte
3
Também me pergunto se existe uma maneira de desfazer uma CTRL+W odigitação acidentalmente.
Paolo
30

Duas alternativas para fechar a janela atual são ZZe ZQ, que, respectivamente, salvam e não salvam as alterações no buffer exibido.

Benoit
fonte
10
Este é certamente o "caminho do vim", crtl + wo parece tão emacs.
Andy Hayden
Não gosto Zporque sou alemão. (Spoiler: layout do teclado se você alternar frequentemente entre as configurações DE / EN)
Tino
6

O comando: hide oculta a janela atualmente focada. Eu acho que essa é a funcionalidade que você está procurando.

Para navegar entre as janelas, digite Ctrl + w seguido de uma tecla de navegação (h, j, k, l ou setas)

Para mais informações prazo :help windowe :help hideno vim.

cledoux
fonte
Isso é ótimo. O Chrome (com o plugin ssh) intercepta <CW> como "aba de fechamento", desativando efetivamente todos os comandos da janela <cw> do vim. Ter uma alternativa é útil.
reinício
6

De :help opening-window(procure por "Fechar uma janela" - /Closing a window)

  • :q[uit]feche a janela atual e o buffer. Se for a última janela, também sairá do vim
  • :bd[elete] descarregar o buffer atual e fechar a janela atual
  • :qa[all]ou :quita[ll]fechará todos os buffers e janelas e sairá do vim ( :qa!para forçar sem salvar as alterações)
  • :clo[se]feche a janela atual, mas mantenha o buffer aberto. Se houver apenas uma janela, este comando falhará
  • :hid[e]ocultar o buffer na janela atual (Leia mais em :help hidden)
  • :on[ly] feche todas as outras janelas, mas deixe todos os buffers abertos
chaptuck
fonte
5

Achei que ctrl+ wna janela que você deseja fechar, basta fazer :q. Isso funciona para mim.

dmarges
fonte
Esta é uma resposta duplicada, na verdade, duplicata de algo que está lá há mais de 3 anos.
22916 Warren P
@WarrenP não parece um dup. Eu não encontrei nenhuma outra resposta que mencione ^W^W:qcomo uma possível solução, então se livre de uma divisão. Observe que, ^W to the window you want to closeaparentemente, implica vários usos de ^W^Wpara mudar para a janela que você deseja fechar.
Tino
Foi mal. O outro é ^ W then o
Warren P
2

Entendo bem sua intenção, também uso buffers exclusivamente e, ocasionalmente, divido se necessário.

abaixo está um trecho da minha .vimrc

" disable macro, since not used in 90+% use cases
map q <Nop>
" q,  close/hide current window, or quit vim if no other window
nnoremap q :if winnr('$') > 1 \|hide\|else\|silent! exec 'q'\|endif<CR>
" qo, close all other window    -- 'o' stands for 'only'
nnoremap qo :only<CR>
set hidden
set timeout
set timeoutlen=200   " let vim wait less for your typing!

O que se encaixa muito bem no meu fluxo de trabalho

Se qfoi pressionado

  • ocultar a janela atual se várias janelas forem abertas; tente sair do vim.

se qofoi pressionado,

  • feche todas as outras janelas, sem efeito se houver apenas uma janela.

Obviamente, você pode agrupar essa parte confusa em uma função , por exemplo

func! Hide_cur_window_or_quit_vim()
    if winnr('$') > 1
        hide
    else
        silent! exec 'q'
    endif
endfunc
nnoremap q :call Hide_cur_window_or_quit_vim()<CR>

Sidenote : Eu remap q, desde que eu não use macro para editar, em vez usar :s, :g, :v, e externa comando de processamento de texto, se necessário, por exemplo, :'{,'}!awk 'some_programm'ou uso :norm! normal-command-here.

qeatzy
fonte
1

Assim como os outros disseram antes, a maneira de fazer isso é pressionar ctrl+ we depois o. Isso "maximizará" a janela atual, enquanto fecha as outras. Se você deseja "desmaximizar", existe um plugin chamado ZoomWin para isso. Caso contrário, você teria que recriar a configuração da janela do zero.

psico
fonte
0

Ok, acabei de me desconectar e reconectar à sessão de tela e estou de volta à tela normal que queria

Sudeep
fonte
Isso não sai vimdo modo de janela dividida, apenas sai screendo modo de painel dividido - que pode ser facilmente confundido, talvez outros também. BTW eu acho esse recurso de tela irritante, portanto, agora eu padrão para o tmuxqual permite uma recolocação com todas as divisões intactas.
Tino