Come ha detto ZyX su #vim, questa domanda suona come "Perché gli esperti di Vim preferiscono gustosi piuttosto che caldi?" .
Gli "esperti Vim" non preferiscono i buffer rispetto alle schede: usano i buffer come proxy file e le schede come aree di lavoro. I buffer e le schede hanno scopi diversi, quindi preferire l'uno all'altro non ha alcun senso.
Il problema con buffer e schede è di confusione , causato da una combinazione di fatti indipendenti.
La maggior parte degli editor di testo e degli IDE "moderni" utilizza una metafora di tabulazione per rappresentare i file caricati. Quella metafora funge da sistema di informazione - mostra all'utente quali file sono aperti e il loro stato - e come dispositivo interattivo - consente all'utente di manipolare (riordinare, selezionare, chiudere ...) quei file aperti. Nonostante i loro numerosi limiti, le schede sono ovunque e le persone sono abituate a loro e si aspettano che siano ovunque.
Vim ha introdotto le tabulazioni in 7.0 come modo per i suoi utenti di creare "aree di lavoro" ad hoc. Nulla nelle loro funzionalità, nelle loro opzioni specifiche, nei loro comandi specifici o nelle loro :help
sezioni suggerisce che le pagine delle schede potrebbero o debbano essere utilizzate come proxy di file.
Nient'altro che il nome e l'aspetto delle "schede", ovviamente, che creano molta confusione.
Senza :set hidden
, che è disabilitato di default e non molto facile da trovare, Vim rende impossibile passare a un altro buffer senza scrivere quello corrente o abbandonare le sue modifiche. I nuovi utenti, ignari di tale opzione, non hanno altra scelta che passare a un uso intensivo di Windows o alla funzionalità "simile a una scheda" più vicina che possono trovare: schede.
"Scheda" è una scelta di nome sfortunata per quella caratteristica, specialmente in un'epoca dominata dall'idea che leggere la documentazione è una perdita di tempo.
In Vim, le pagine delle schede sono un'astrazione costruita sopra le finestre, esse stesse un'astrazione costruita sopra i buffer. Ogni nuovo livello aggiunge funzionalità utili ma limita il flusso di lavoro.
Il "modo buffer"
Con un flusso di lavoro basato su buffer, i file con cui stai lavorando sono distribuiti lungo una singola dimensione. Puoi scorrere i tuoi buffer, puoi accedere a un buffer specifico digitando parte del suo nome (con completamento) o il suo numero, puoi alternare tra i buffer, puoi indirizzarli abbastanza facilmente. Non c'è praticamente alcun attrito.
Otto buffer aperti, solo uno visibile:
Cambio per numero:
Cambio per nome:
I buffer sono proxy di file di Vim. Se pensi in termini di file, pensi in termini di buffer.
La "via della finestra"
Con un flusso di lavoro basato su finestre, i tuoi "file" sono entrambi distribuiti lungo la stessa singola dimensione "virtuale" come farebbero se tu utilizzassi solo i buffer e lungo altre due dimensioni "fisiche". Ma gli spazi cartesiani in cui si trovano quelle dimensioni sono quasi completamente separati: spostarsi su un altro buffer significa ancora "spostarsi su un altro file", ma spostarsi su un'altra finestra no. Il buffer che corrisponde al file desiderato può essere visualizzato in quella finestra ma potrebbe anche essere visualizzato in un altro, forse in un'altra scheda, o per niente.
Con Windows, la navigazione tra i file aperti o diventa troppo complessa o troppo semplicistica, anche con 'switchbuf'
e :sb
. Soprattutto perché sei costretto a usare due serie di comandi per quello che è essenzialmente la stessa cosa: accedere a un buffer.
Windows ha il suo utilizzo, come descritto di seguito, ma non ha le carte in regola per sostituire i buffer nel flusso di lavoro di chiunque.
Qui sto lavorando a un sistema di colori Vim. Le due finestre sono viste diverse dello stesso buffer: quella in alto funge da riferimento, con una tabella dei codici colore utilizzati nel sistema dei colori e quella in basso è dove lavoro:
Le finestre non sono progettate come proxy di file e non possono essere trasformate in unità: sono "contenitori" o "finestre" progettate per offrire una vista in un buffer. Ne più ne meno.
Il "modo tab"
Con un flusso di lavoro basato su schede, essenzialmente si tenta di imitare l'esperienza utente a cui si è abituati dal proprio editor precedente, ignorando completamente la natura stessa delle pagine delle schede di Vim. Se dimentichiamo per un momento che questa strategia è generalmente molto improduttiva, è anche impossibile, proprio come con Windows, forzare Vim ad aderire a quel paradigma "un file = una scheda" senza perdere molta flessibilità.
Continuando a lavorare con gli stessi file di cui sopra, il tabline occupa uno spazio significativo praticamente senza alcun vantaggio. Tutti i miei file e tutte le mie schede sono chiamati, javascript*.vim
quindi non posso fare 3gt
ed essere sicuro che finirò nel posto giusto ed è impossibile raggiungere una scheda specifica per nome. Aggiungete a ciò il fatto che la sua etichetta può benissimo essere molto inutile ma perfettamente logica [Quickfix List]
... Dato che non esiste un modo pratico per legare un file / buffer a una scheda, in pratica rimane solo un modo pratico per navigare tra le schede / buffers / files: ciclismo.
E sì, il mio tabline è ostruito da solo 8 schede, immagina se ne avessi 20!
Otto buffer aperti in otto schede (errato)
Due schede per due attività specifiche (a destra)
Le schede sono "contenitori" o "finestre" progettate per contenere una o più finestre, a loro volta "contenitori" progettati per contenere buffer.
In conclusione
Gli "esperti Vim" (supponiamo che io possa parlare come se fossi uno) non preferiscono i buffer rispetto alle schede: usano semplicemente Vim come è stato progettato e sono perfettamente a suo agio con quel design:
Gli "esperti Vim" hanno 2, 30 o 97 buffer caricati e sono molto contenti di non avere a che fare con la distribuzione spaziale;
quando hanno bisogno di confrontare due file o lavorare in una parte del buffer corrente mentre ne tiene un altro come riferimento, "esperti di Vim" usano Windows perché è così che devono essere usati;
quando hanno bisogno di lavorare per un po 'su una parte separata del progetto senza fare confusione con la loro vista attuale, "Esperti Vim" caricano una nuova scheda.