Ultimamente ho ridotto drasticamente il numero di plugin che sto usando, quindi cerco risposte usando solo le funzionalità integrate di Vim.
Ho notato un difetto nel mio flusso di lavoro quando sto modificando molti buffer: sono su un buffer e voglio passare a un altro dei quali non ricordo il nome e che non è il buffer alternativo . Quindi l'uso :b#
non è possibile e l'utilizzo del completamento con il comando :b
non è conveniente neanche.
Per fare ciò stavo facendo quanto segue:
- Primo utilizzo
:buffers
per ottenere l'elenco dei buffer aperti - Ricorda il numero del buffer che voglio usare
- Premere Enterper chiudere l'elenco dei buffer
- Utilizzare
:bX
conX
il numero del buffer da utilizzare.
Questo flusso di lavoro mi è sembrato piuttosto pesante, quindi ho aggiunto le seguenti righe al mio
.vimrc
:
" Improve the navigation in the buffers
nnoremap <Leader><S-b> :B<CR>
command! B call Buffers()
function! Buffers()
execute "buffers"
let buffer=input("Enter a buffer:")
execute "b" . buffer
endfunction
Questo mi dà un comando :B
(e una mappatura) che chiama la funzione :buffers
aspetta un input e infine chiama :b
seguito dall'input.
Funziona bene ma sono sorpreso di dover sviluppare una tale funzione: di solito Vim ha un flusso di lavoro predefinito piuttosto efficiente, quindi mi chiedo se c'è un modo migliore per passare a un buffer di cui non so nulla tranne che è già stato aperto nella mia sessione di editing.
:b#
non è quello che sto cercando, ma sì, è interessante il fatto che è possibile salvare una sequenza di tasti digitando direttamente :b
senza premere enter
prima. (In effetti è forse troppo leggero per essere una risposta, ma vale la pena commentare :-))
#
personaggio come sostituto di un numero (buffer), piuttosto che il #
carattere letterale .
:ls
seguito da:b#
(non è necessario il ritorno di successo o la fuga prima, può andare direttamente dalla lista dei buffer di 'ls'.) (Distacco come commento perché non sembra sufficientemente rilevante per una risposta? Anche se mi chiedo mi manca qualcosa e rispondo alla domanda sbagliata.)