Cuando trabajo con VIM, siempre tengo varias ventanas visibles. A veces me gustaría tener una manera fácil, intercambiar esas ventanas en lugares. ¿Hay algún complemento, macro, etc. para hacer esto más fácil? Por cierto, yo uso MiniBufExplorer.
123

Respuestas:
Hay algunos comandos útiles incorporados que le dan una cierta cantidad de control, pero no es exhaustivo. Los principales son:
Ctrl- W, r(es decir CTRL, mantener , presionar W, soltar CTRL, presionar r) - que gira las ventanas (la primera ventana se convierte en la segunda, la segunda se convierte en la tercera, etc.)
Ctrl- W, x- intercambia la ventana actual con la siguiente
Ctrl- W, Shift- H- mueva esta ventana al extremo izquierdo
Ctrl- W, Shift- K- mueve esta ventana a la parte superior
(y de manera similar para Ctrl- W, Shift- Jy Ctrl- W, Shift- L). Ver:
para más información.
fuente
Escribí y he estado usando el siguiente fragmento de código en mi vimrc para copiar y pegar mis ventanas Vim.
Esto define, por ejemplo, los siguientes atajos:
<c-w>y: "Yanks the window", es decir, almacena el número del búfer en la ventana actual en una variable global.<c-w>pp: "Pone la ventana en lugar de la ventana actual", es decir, lee el número de búfer almacenado previamente y abre ese búfer en la ventana actual. También almacena el número del búfer que solía estar en la ventana actual.Si "intercambiando esas ventanas en lugares", quiere decir "abriendo el búfer en la ventana A en la ventana B, y viceversa, sin cambiar la posición de las ventanas", puede usar la siguiente secuencia de teclado para intercambiar las ventanas:
<c-w>y(tirando del número de búfer)<c-w>pp(pegar el búfer)<c-w>pp(pegar el búfer nuevamente)Funciona solo en Vim> = 7.0.
fuente
Hice una pregunta similar al mismo tiempo: quería una forma de intercambiar ventanas específicamente sin alterar un diseño arbitrariamente complicado. Terminé haciendo un complemento vim de una de las soluciones sugeridas. Se llama WindowSwap.vim ; instálelo con su administrador de complementos vim preferido y dele un giro.
Con WindowSwap.vim, simplemente
<Leader>ywtirar de una ventana.<Leader>pwpara pegar esa ventana, intercambiándola con la posición de la primera.Las combinaciones de teclas son, por supuesto, configurables según sus preferencias.
fuente
Como
<c-w>ro<c-w>xtiene una restricción que no puede rotar o intercambiar ventanas cuando las divisiones de ventanas verticales y horizontales se mezclan. Y<c-w>Hpuede hacer que el diseño de la ventana cambie más allá de sus expectativas, especialmente cuando tiene muchas ventanas.Por lo tanto, puede hacer un trabajo para satisfacer sus necesidades particulares de cambio de ventana / búfer. Aquí hay un ejemplo para cambiar la ventana actual con la ventana superior izquierda (normalmente la hago maximizada verticalmente):
fuente
En mi opinión, http://vimcasts.org/episodes/working-with-windows/ tiene la respuesta perfecta para esta pregunta. En breve:
ctrl-w wciclo entre las ventanas abiertasctrl-w henfoca la ventana a la izquierdactrl-w jenfocar la ventana hacia abajoctrl-w kenfocar la ventana hacia arribactrl-w lenfoca la ventana a la derechactrl-w rrotar todas las ventanasctrl-w xintercambiar ventana actual con su vecinoctrl-w Hmover la ventana actual a la izquierdactrl-w Jmover la ventana actual a la parte inferiorctrl-w Kmover la ventana actual hacia arribactrl-w Lmover la ventana actual a la extrema derechafuente