Voglio selezionare o evidenziare un blocco in emacs senza usare il mouse ma farlo dalla tastiera come la modalità visuale di vim. Qual è il modo più semplice per farlo da una tastiera?
Voglio selezionare o evidenziare un blocco in emacs senza usare il mouse ma farlo dalla tastiera come la modalità visuale di vim. Qual è il modo più semplice per farlo da una tastiera?
Risposte:
Dai un'occhiata alla regione-rettangolo in emacs.
In breve, inizi la selezione come al solito con Control- Space, quindi uccidi la regione con Control- x r ke incolla (o strappa ) il blocco ucciso con Control- x r y.
Se capisco correttamente la domanda, in origine non si tratta di regioni rettangolari.
C-Spc
mette un segno nella posizione corrente.
Ovunque si trovi il cursore, il testo tra l'ultimo segno e la posizione corrente viene "selezionato" (puoi evidenziarlo attivandolo transient-mark-mode
, ma questo significa anche che i segni devono essere cancellati quando non vuoi evidenziare).
Puoi operare su quella regione con comandi come:
C-w
. . Uccidi la regione. Questo elimina e inserisce la regione nel kill ring.
C-y
. . Yank. Questo inserisce l'ultimo frammento del kill ring.
M-y
. . Cycle kill ring. Immediatamente dopo C-y
, questo sostituisce la parte strappata con gli altri frammenti nel kill ring.
M-w
. . Salva la regione nel kill ring. Mi piace C-w
, ma non elimina.
Questo è solo l'uso di base. I marchi hanno anche altri usi. Raccomando il tutorial ( C-h t
).
C-s
C-r
sono comunemente usati in questo contesto per andare a trovare la fine / inizio della regione. (Particolarmente utile in una macro.)
M-x indent-region
.
indent-region
funzioni bene, ma c-indent-line-or-region
(quello associato al tasto Tab ) non lo è. L'ultima funzione non agisce sulle regioni contrassegnate , ma su quelle selezionate , ovvero la regione che viene evidenziata come se l'avessi selezionata con il mouse.
C-Spc
due volte nel punto in cui metti il segno. Ciò attiva temporaneamente la modalità contrassegno transitorio (finché non annulli (con C-g
)). Quindi spostare il punto per visualizzare la regione selezionata.
Emacs 24.4 ora ha la modalità contrassegno rettangolo. Spazio Cx per invocarlo.
Vedere l'articolo: "Lavorare con selezioni rettangolari" , in particolare la sezione dei commenti. Vedere anche la sezione della documentazione della modalità CUA intitolata "Supporto rettangolo CUA". C'è anche un bel video su Vimeo .
Sebbene C-SPC
sia un modo comune per iniziare a contrassegnare qualcosa da qualunque punto si trovi, ci sono spesso modi più rapidi / semplici che non implicano il passaggio esplicito ai punti di inizio / fine ...
M-h
- un mezzo importante per contrassegnare un paragrafo . Un "paragrafo" spesso significa un blocco di codice.
C-M-h
e C-M-@
- rispettivamente per contrassegnare sexps e defuns . Funziona per diverse lingue, non solo per i lisps.
tenere premuto il tasto Maiusc - un altro modo semplice per evidenziare durante il movimento. Ad esempio, M-S-f
seleziona in avanti una parola intera. Questo è
shift-select-mode
, ed è abilitato di default in Emacs 24+. Su alcune tastiere (non chiclet) dovresti riuscire a tenere premuto C-S-
un solo mignolo.
È possibile premere ripetutamente uno di questi per aumentare la selezione.
Ci sono anche alcuni modi speciali per contrassegnare le cose:
C-x h
- segna l'intero buffer
C-x SPC
- entra in modalità segno rettangolo
(NOTA: utilizzare C-g
spesso per annullare la marcatura durante la sperimentazione.)
Ci sono alcuni pacchetti aggiuntivi che migliorano la selezione di regioni e cose. Questi funzionano tutti bene insieme e si adattano a diversi casi d'uso. Usali tutti!
expand-region : Expand region aumenta la regione selezionata di unità semantiche. Continua a premere il tasto finché non seleziona ciò che desideri. C-=
è un'associazione consigliata per esso. Premilo un paio di volte per ottenere ciò di cui hai bisogno.
easy-kill : usaM-w
e un mnemonico per selezionare diversi tipi di cose, come parole, sexps, elenchi, ecc.
zop-to-char : come zap-to-char , ma fornisce una buona selezione e altre azioni guidate dal menu.
diff-hl : evidenzia le regioni modificate non salvate. Utilizzarediff-hl-mark-hunk
per selezionare / contrassegnare un pezzo.
sovrapposizione di simboli : selezionare il simbolo nel punto premendo un tasto (M-i
). Quindi puoi fare altre cose con esso, come copiare, cercare, saltare, sostituire, ecc.
Utilizzare Control- Spaceper impostare un contrassegno e spostare il cursore.
Il transient-mark-mode
metterà in evidenza le selezioni per te. M- x transient-mark-mode
.
Puoi impostare Emacs per abilitare questa modalità di default usando una personalizzazione. M- x customize-option
RET transient-mark-mode
.
... e nel caso in cui utilizzi Ubuntu e C-spcnon funziona per te: devi cancellare l'associazione di tasti "metodo di input successivo" IBus, come in
eseguire
ibus-setup
e modificare l'associazione dei tasti per "metodo di immissione successivo" in qualcos'altro (o eliminarlo completamente facendo clic sul pulsante "..." e quindi sul pulsante "Elimina").
Citazione tratta da una risposta a una domanda SO.
Per espandere la risposta di Edin Salkovic, se usi la modalità CUA, puoi usare per iniziare una selezione di blocchi visivi. Ci sono molte scorciatoie per controllare la selezione dei blocchi descritte nella documentazione di CUA .
Con Emacs 25, è sufficiente premere C- Spacee quindi spostare il cursore ovunque si desideri evidenziare / selezionare la regione di testo che ti interessa. Successivamente, potresti aver bisogno di questi comandi:
mark-defun