Abra un búfer como una división vertical en VIM

176

Si está editando un archivo en VIM y luego necesita abrir un búfer existente (por ejemplo, de su lista de búfer :buffers), ¿cómo puede abrirlo en una división vertical?

Sé que ya puedes abrirlo con una división normal como:

:sbuffer N

En ninguna parte Nestá el número de búfer que desea, sin embargo, lo anterior abre ese Nbúfer horizontalmente, no verticalmente.

También soy consciente de que puede cambiar la ubicación de la ventana después de abrir y tener una división vertical de esta manera:

Ctrl-W H
Ctrl-W L

Lo cual dividirá verticalmente la ventana hacia la derecha o hacia la izquierda.

Me parece que si hay un sbufferdebería haber un vsbufferpero que no existe (no que yo sepa)

Además, tenga en cuenta que no estoy buscando un complemento para resolver esta pregunta. Conozco una gran cantidad de complementos que te permitirán hacer esto.

Estoy seguro de que podría estar perdiendo algo que ya está allí.

EDITAR: con el mejor espíritu de colaboración, he creado una función simple con un mapeo si alguien más se encuentra con este problema y no desea instalar un complemento:

Función:

" Vertical Split Buffer Function
function VerticalSplitBuffer(buffer)
    execute "vert belowright sb" a:buffer 
endfunction

Cartografía:

" Vertical Split Buffer Mapping
command -nargs=1 Vbuffer call VerticalSplitBuffer(<f-args>)

Esto lleva a cabo la tarea de abrir un búfer en una división derecha, por lo que para el búfer 1, lo llamaría así:

:Vbuffer 1
alfredodeza
fuente

Respuestas:

206

Tratar:

:vert sb N

que abrirá una división vertical izquierda (por defecto, a menos que haya modificado algunas opciones).

Para abrir una división a la derecha, por otro lado:

:vert belowright sb N
Jeet
fuente
55
¿No parece extraño no tener vsbuffer N? Molesto. Tu respuesta lo clava. ¡Gracias!
alfredodeza
13
Siempre siento que debería haber un vsbuffertambién, y a menudo también me olvido Ctrl-w Tde abrir un búfer en una nueva pestaña (o quiero hacerlo con un búfer que actualmente no está activo o visible). Como alternativa, puede usar una barra para cualquiera de estos casos, que me parece más fácil de recordar que la respuesta válida de @ Jeet: :vsp | b Ny :tabe | b N.
ches
Me gusta que este comando permita Nque se complete automáticamente (lo que no parece posible con el comando en la otra respuesta). Ambos votaron, sin embargo.
David Rivers
124

:vsp | b1

1 siendo algún número de búfer. Use bufferspara enumerar todos los buffers.

Aquí hay información adicional sobre divisiones, si está interesado. Enlace

Jerinaw
fuente
9
También podría usar :ls, que parece ser un atajo para :buffers.
dskecse
3
también puedes hacerlo:vsp | b <buffer name>
Kenny Bambridge
44
@KennyBambridge aún mejor: solo tiene que escribir parte del nombre del búfer (
distingue entre
Tenga en cuenta que, aunque el enlace proporcionado por @Jerinaw es bueno, la terminología en esa página es muy engañosa, por lo que también deberá leer los comentarios en esa página para aclarar.
NeilG
5

Puede aliviar su dolor agregando lo siguiente a su .vimrc

cabbrev vb vert sb

Ahora puede usarlo de la siguiente manera.

:vb <buffer>
Vamshi Kadaru
fuente
¡Esto es bueno, la versión extendida también ofrece autocompletado de nombres de buffers! Yo tampoco conocía a Cabbrev, gracias.
kidpixo
2

También puede combinar :lsesa lista de sus búferes actuales y los comandos para abrir el búfer deseado en

  1. ventana actual: :b <N/bufname>
  2. división vertical: :vsp | b <N/bufname>
  3. división horizontal: :sp | b <N/bufname>

Para esto, he agregado las siguientes asignaciones a mi ~/.vimrc(el orden de las asignaciones representa la lista anterior de ventanas deseadas)

 nnoremap <leader>b :ls<cr>:b<space>
 nnoremap <leader>v :ls<cr>:vsp<space>\|<space>b<space>
 nnoremap <leader>s :ls<cr>:sp<space>\|<space>b<space>

En base a esto, puede ver la lista de búfer tan pronto como presione

  1. <leader>b
  2. <leader>v
  3. <leader>s

y luego simplemente ingrese el número de búfer deseado N. Esto abrirá el búfer en la ventana deseada. Por supuesto, también puede utilizar una parte del nombre del búfer bufname.

Me asignan el <leader>que ,sobre la base de

let mapleader = ","

Para algunas personas (por ejemplo, yo), esto podría incluso reemplazar complementos como MiniBufExpl y, por lo tanto, ahorrar espacio en la pantalla.

Wolfson
fuente
0

puedes usar Neovim, así:

autocmd FileType python nmap <F5> :rightbelow vertical split <bar> :term python %<cr>
Arobt
fuente