Aprire un buffer come divisione verticale in VIM


176

Se si sta modificando un file in VIM e quindi è necessario aprire un buffer esistente (ad es. Dall'elenco dei buffer:) :bufferscome è possibile aprirlo in una divisione verticale?

So che puoi già aprirlo con una divisione normale come:

:sbuffer N

Wehere Nè il numero di buffer desiderato, tuttavia, quanto sopra apre quel Nbuffer in orizzontale, non in verticale.

Sono anche consapevole del fatto che è possibile modificare il posizionamento della finestra dopo l'apertura e avere una divisione verticale in questo modo:

Ctrl-W H
Ctrl-W L

Che dividerà verticalmente la finestra a destra o a sinistra.

Mi sembra che se c'è un sbufferci dovrebbe essere un vsbufferma che non esiste (non che io sia a conoscenza)

Inoltre, tieni presente che non sto cercando un plug-in per risolvere questa domanda. Conosco molti plugin che ti permetteranno di farlo.

Sono sicuro che potrei mancare qualcosa che è già lì.

EDIT: Nel migliore spirito di collaborazione, ho creato una semplice funzione con una mappatura se qualcun altro si imbatte in questo problema e non desidera installare un plug-in:

Funzione:

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

Mappatura:

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

Questo compie il compito di aprire un buffer in una divisione corretta, quindi per il buffer 1, lo chiameresti come:

:Vbuffer 1

Risposte:


206

Provare:

:vert sb N

che aprirà una divisione verticale a sinistra (per impostazione predefinita, a meno che tu non abbia modificato alcune opzioni).

Per aprire una divisione a destra, d'altra parte:

:vert belowright sb N

5
non sembra strano non averlo vsbuffer N? Fastidioso. La tua risposta lo inchioda. Grazie!
Alfredodeza,

13
Ho sempre la sensazione che ci dovrebbe essere vsbufferanche un , e spesso dimentico anche Ctrl-w Tdi aprire un buffer in una nuova scheda (o voglio farlo con un buffer che non è attualmente attivo o visibile). Quindi, in alternativa, puoi usare una barra per uno di questi casi, che trovo più facile da ricordare della risposta valida di @ Jeet: :vsp | b Ne :tabe | b N.
ches,

Mi piace che questo comando consenta Ndi essere completato automaticamente (cosa che non sembra possibile con il comando nell'altra risposta). Entrambi hanno votato, tuttavia.
David Rivers,

124

:vsp | b1

1 è un numero di buffer. Utilizzare buffersper elencare tutti i buffer.

Ecco alcune informazioni aggiuntive sugli split, se sei interessato. collegamento


9
Potresti anche usare :ls, che sembra essere una scorciatoia per :buffers.
dskecse,

3
puoi anche fare:vsp | b <buffer name>
Kenny Bambridge il

4
@KennyBambridge ancora meglio - devi solo digitare parte del nome del buffer (maiuscole e minuscole) e quindi
premere

Tieni presente che, sebbene il link fornito da @Jerinaw sia buono, la terminologia in quella pagina è gravemente fuorviante, quindi dovrai leggere anche i commenti su quella pagina per chiarire.
NeilG

5

Puoi alleviare il tuo dolore aggiungendo quanto segue al tuo .vimrc

cabbrev vb vert sb

Ora puoi usarlo nel modo seguente.

:vb <buffer>

questo è bello, la versione estesa offre anche il completamento automatico del nome buffer! Anche io non conoscevo cabbrev, grazie.
kidpixo,

2

Puoi anche combinare :lsquello che elenca i tuoi buffer correnti e i comandi per aprire il buffer desiderato in entrambi

  1. finestra corrente: :b <N/bufname>
  2. divisione verticale: :vsp | b <N/bufname>
  3. divisione orizzontale: :sp | b <N/bufname>

Per questo, ho aggiunto i seguenti mapping al mio ~/.vimrc(l'ordine dei mapping rappresenta l'elenco sopra delle finestre desiderate)

 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>

Sulla base di questo, puoi vedere l'elenco dei buffer non appena premi

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

e quindi basta inserire il numero di buffer desiderato N. Questo aprirà quindi il buffer nella finestra desiderata. Ovviamente puoi sempre usare anche una parte del nome del buffer bufname.

Ho mappato il <leader>to in ,base a

let mapleader = ","

Per alcune persone (ad es. Me) questo potrebbe persino sostituire plug-in come MiniBufExpl e quindi risparmiare spazio sullo schermo.


0

puoi usare Neovim, in questo modo:

autocmd FileType python nmap <F5> :rightbelow vertical split <bar> :term python %<cr>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.