Il exchange-point-and-mark
comando è vincolato C-x C-x, ma non riesco a pensare a nessun caso d'uso che lo renderebbe meritevole di un legame così importante.
Come posso usare il exchange-point-and-mark
per migliorare la mia tecnica di modifica?
Il exchange-point-and-mark
comando è vincolato C-x C-x, ma non riesco a pensare a nessun caso d'uso che lo renderebbe meritevole di un legame così importante.
Come posso usare il exchange-point-and-mark
per migliorare la mia tecnica di modifica?
Risposte:
Ci sono due casi a cui riesco a pensare: riattivare la regione e regolare le dimensioni della regione.
Uso molto spesso questa associazione per riattivare la regione dopo aver eseguito un comando che la disattiva o facendo qualcosa che imposta il segno e sposta il punto senza attivare la regione.
Ad esempio, esegui un Cs e cerca in avanti qualcosa. Premi RET per uscire dalla ricerca, quindi Cx Cx per contrassegnare tutto da dove hai iniziato la ricerca.
Un altro esempio che faccio molto quando voglio includere alcuni esempi di elisp in una risposta StackExchange:
L'altro caso è quando si sta contrassegnando una regione e si desidera estenderla / ridurla. In tal caso è conveniente essere in grado di saltare all '"altra estremità" della regione, spostarla, quindi tornare indietro. Se la regione è già attiva, premere Cx Cx la lascerà attiva, permettendoti di muovere entrambe le estremità.
Chiedi Emacs: C-h r i exchange-point-and-mark RET
o, meglio, C-h r i C-x C-x RET
. Questo ti porta alle informazioni mostrate di seguito.
Questo è ciò che dice il manuale di Emacs, Mark Setting Mark in risposta alla tua domanda:
C-x C-x
è utile quando si è soddisfatti della posizione del punto ma si desidera spostare l'altra estremità della regione (dove si trova il segno) . L'utilizzo diC-x C-x
una seconda volta, se necessario, riporta il segno nella nuova posizione con il punto nella posizione originale. Normalmente, se il segno è inattivo, questo comando prima riattiva il punto in cui è stato impostato l'ultima volta, per garantire che l'area venga lasciata evidenziata. Tuttavia, se lo chiami con un argomento prefisso, lascia il segno inattivo e la regione non illuminata; puoi usarlo per saltare al segno in un modo simile aC-u C-<SPC>
.
E questo è ciò che dice al riguardo nel nodo Contrassegno transitorio disabilitato :
La
transient-mark-mode
disattivazione di [ ] commuta Emacs su una modalità operativa alternativa:
L'impostazione del segno, con comandi come
C-<SPC>
oC-x C-x
, non evidenzia la regione. Pertanto, non si può dire guardando dove si trova il segno; devi ricordare.La solita soluzione a questo problema è impostare il segno e utilizzarlo presto, prima di dimenticare dove si trova. Puoi anche controllare dove si trova il segno usando
C-x C-x
, che scambia le posizioni del punto e del segno - vedi Impostazione del segno .Mentre la modalità contrassegno transitorio è disattivata, è possibile attivarla temporaneamente utilizzando
C-<SPC> C-<SPC>
oC-u C-x C-x
.
e:
C-u C-x C-x
Scambia punto e contrassegno, attiva il contrassegno e abilita temporaneamente la modalità Contrassegno transitorio, fino alla successiva disattivazione del contrassegno. (Questo è ilC-x C-x
comandoexchange-point-and-mark
, con un argomento prefisso.)
Lo uso quando ho perso una selezione a causa di un'operazione che l'ha rimossa e voglio ripristinare la selezione. Uno di questi scenari sarebbe:
Questo succede quando voglio fare un backup ad hoc di un'area selezionata e sperimentare sulla copia, come, ad esempio, voglio fare un po 'di ricerca e sostituzione, ma non riesco a pensare a un modo per fare in un modo che non distrugge del testo che dovrebbe rimanere, quindi in seguito lo annullerei dalla copia.
Le altre risposte si concentrano sull'utilità di C-x C-x
quando transient-mark-mode
è attivo. Ma C-x C-x
precede transient-mark-mode
ed è utile indipendentemente da esso.
Il ruolo principale di C-x C-x
è scambiare punto e segno. Ciò è utile quando si modificano due punti in un singolo buffer e per qualche motivo non si desidera dividere la finestra corrente. Effettua alcune modifiche, imposta il segno, sposta in un altro punto del buffer, esegui alcune modifiche C-x C-x
, esegui alcune modifiche nella posizione precedente C-x C-x
, esegui altre modifiche, fino alla nausea. (Se non hai intenzione di tornare al secondo punto, C-u C-SPC
potrebbe essere più intuitivo. Cerca l' anello di marcatura nel manuale di Emacs.)
Quando transient-mark-mode
è disabilitato, C-x C-x
ha un altro scopo importante: ti permette di scoprire dove si trova la regione. C-x C-x
, rapida occhiata al punto, di C-x C-x
nuovo.
(E nel caso ti stia chiedendo - sì, alcuni di noi preferiscono ancora usare Emacs con transient-mark-mode
disabilitato.)