Questo risponde alla tua domanda generale, ma non in particolare al caso d'uso menzionato (spostando frammenti di codice).
Emacs ora ha quella che chiama una regione non contigua , che è il tipo di selezione che stai chiedendo. Vanilla Emacs non fornisce alcun modo speciale per creare una regione non contigua, tranne se si tratta di un rettangolo . Ma la libreria Zone lo fa.
Zone di libreria consente di definire più zone nel buffer. Un elenco di zone è una regione non contigua . Puoi anche pensarlo come più regioni, a seconda di come desideri utilizzarlo. È possibile definire più elenchi di zone in qualsiasi momento, ciascuno assegnato a una diversa variabile di zona e passare da uno all'altro.
Se usi anche la libreria Bookmark + puoi salvare gli elenchi di zone in modo persistente e ripristinarli nelle sessioni successive di Emacs. Bookmark + consente inoltre di assegnare tag arbitrari a un segnalibro. Ciò significa che è possibile taggare un elenco di zone.
Le zone in un determinato elenco di zone si trovano in genere nello stesso buffer, ma non è necessario. In questo, un elenco di zone è più generale di una regione non contigua. È anche più generale in quanto ogni zona può contenere informazioni aggiuntive, oltre ai limiti di zona, e può avere un identificatore.
Esistono diversi modi per creare una zona. Uno dei più semplici è usare C-x n a
: definisce una zona dalla regione attiva e la aggiunge al set di zone corrente. ( C-x n n
( narrow-to-region
) fa anche questo, oltre al restringimento.)
Queste sono alcune delle cose che puoi fare con un set (elenco) di zone:
- Ordinali.
- Unire (unire) le zone adiacenti o sovrapposte (che include l'ordinamento).
- Intersecali.
- Restringere il buffer a una zona dell'elenco. Ciclo tra restringimenti. Vedi più restringimenti .
- Seleziona una zona nell'elenco come regione attiva. Scorri tra le regioni.
- Cerca (vengono automaticamente uniti prima). Per questo è necessaria la libreria Isearch + .
- Interroga-sostituisci su di loro.
- Evidenziarli e deselezionarli. (Per questo è necessario evidenziare la libreria o la libreria
facemenu+.el
.
Vedi anche Narrow Indirect , che consente di creare buffer indiretti che sono cloni di un determinato buffer e che sono ristretti a diverse parti di esso.