Cancelar ventana dividida en Vim


He dividido mis ventanas horizontalmente. Ahora, ¿cómo puedo volver al modo normal, es decir, ninguna ventana dividida solo una ventana sin cancelar todas mis ventanas abiertas. Tengo 5 y no quiero "salir", solo quiero salir de la ventana dividida.

Author: eckes, 2011-01-26

9 answers

Pulse Control+w , luego pulsa q para cerrar cada ventana a la vez.

Actualizar : También considere la respuesta de eckes que puede ser más útil para usted, involucrando :on (lea más abajo) si no desea hacerlo una ventana a la vez.

 234
Author: Warren P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-16 15:17:24

Para cerrar todas las divisiones, suelo colocar el cursor en la ventana que será en-ly visible y luego hago :on lo que hace que la ventana actual sea en-ly visible. Bonito mnemotécnico para recordar.


Editar: :help :on me mostró que estos comandos son los mismos:

  • :on
  • :only
  • CTRL-w CTRL-o
  • Y sí, también CTRL-W o tiene el mismo efecto (como Nathan respondió).

Cada una de estas cuatro cierra todas las ventanas excepto la activa.

 220
Author: eckes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:19

Para cerrar todas las ventanas excepto la actual use:

CTRL+w, o

Es decir, el primer CTRL+w y luego o.

 47
Author: Nathan Fellman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-26 21:03:42

Dos alternativas para cerrar la ventana actual son ZZ y ZQ, que, respectivamente, guardarán y no guardarán los cambios en el búfer mostrado.

 22
Author: Benoit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-09 15:45:22

El comando :hide ocultará la ventana actualmente enfocada. Creo que esta es la funcionalidad que estás buscando.

Para navegar entre ventanas, escriba Ctrl + w seguido de una tecla de navegación (h,j,k,l o teclas de flecha)

Para más información ejecute :help window y :help hide en vim.

 6
Author: cledoux,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-26 20:50:24

Al igual que los demás dijeron antes, la forma de hacer esto es presionar ctrl+w y luego o. Esto "maximizará"la ventana actual, mientras que cerrará las otras. Si desea ser capaz de "unmaximize", hay un plugin llamado ZoomWin para eso. De lo contrario, tendría que recrear la configuración de la ventana desde cero.

 1
Author: psyho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-28 09:10:44

Entiendo bien su intención, también uso búferes exclusivamente, y ocasionalmente divido si es necesario.

A continuación se muestra un extracto de mi .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!

Que se ajusta bastante bien a mi flujo de trabajo

Si se pulsa q

  • ocultar la ventana actual si hay varias ventanas abiertas, de lo contrario intente salir de vim.

Si se pulsa qo,

  • cierre todas las demás ventanas, sin efecto si solo una ventana.

Por supuesto, puedes envolver esa parte desordenada en una función , por ejemplo

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: Remapeo q, ya que no uso macro para editar, en su lugar uso :s, :g, :v, y comando de procesamiento de texto externo si es necesario, por ejemplo, :'{,'}!awk 'some_programm', o use :norm! normal-command-here.

 1
Author: qeatzy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-03 05:38:52

Bien, acabo de desconectar y volver a conectar a la sesión de pantalla y estoy de vuelta a la pantalla normal que quería

 0
Author: Sudeep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-26 20:46:44

Encontré que ctrl-w a la ventana que desea cerrar, entonces simplemente haga :q Esto funciona para mí.

 0
Author: dmarges,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-09 22:08:08