Buffer multipli, stesso file, impostazioni diverse


10

È possibile modificare un file con diverse impostazioni contemporaneamente? Più precisamente, vorrei avere più buffer nella stessa istanza di Vim che hanno lo stesso contenuto (la modifica di un buffer influisce immediatamente sul contenuto dell'altro buffer), ma posizioni del cursore diverse, segni diversi, evidenziazione della sintassi diversa, ecc.

I casi d'uso più comuni includono la modifica indipendente di parti diverse dello stesso file (senza ad esempio entrare in modalità visiva in un'istanza interrompendo l'attuale selezione della modalità visiva nell'altra istanza) e modificare file in formato misto (ad esempio HTML e Javascript) senza dover cambiare le impostazioni . (Un approccio alternativo per il secondo caso d'uso sarebbe quello di modificare automaticamente le impostazioni in base alla posizione del cursore, ma non rientra nell'ambito di questa domanda.)

Un editore la cui menzione, ammettendo, potrebbe scioccare, chiama questo "buffer indiretto".

Risposte:


2

L'uso di più finestre per visualizzare lo stesso buffer consente di visualizzare, modificare, selezionare, ... su parti diverse di un buffer.

L'evidenziazione della sintassi è una questione più complicata, a seconda di cosa si desidera esattamente. Vim supporta già l'evidenziazione di diverse parti di un buffer con sintassi diversa. Ad esempio, se si dispone di un buffer di tipo di file html, i <style>tag verranno evidenziati come CSS, i <script>tag verranno evidenziati come javascript, ecc. Questo viene fatto utilizzando il :syn includecomando e quindi definendo le aree di sintassi pertinenti a cui applicare la sintassi.

Un'alternativa è utilizzare il :ownsyntaxcomando per specificare l'evidenziazione della sintassi utilizzata per una finestra specifica.

I segni sono il punto critico. I segni minuscoli sono specifici di un buffer e i segni maiuscoli sono globali, ma non ci sono segni specifici della finestra.


1
Se utilizzo più finestre, significa che devono essere sempre sullo schermo? Cosa succede se chiudo una finestra mentre un'altra finestra mostra lo stesso buffer, la posizione del cursore in quella finestra viene persa? C'è qualcosa di simile :ownsyntaxad altre impostazioni, come rientro, comando del compilatore, ecc.?
Gilles 'SO- smetti di essere malvagio' il

@Gilles Puoi avere due finestre che non sono mai sullo schermo insieme posizionandole in schede separate, mantenendo così le impostazioni specifiche della finestra, la posizione del cursore, ecc. Ciò potrebbe aiutare, a seconda del tuo caso d'uso specifico.
Rich
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.