Convenzione sull'uso di Cx o Cc come chiavi di prefisso


16

Quali sono le convenzioni per l'utilizzo C-x, C-co M-come chiavi prefisso?

Ad esempio: è C-x, ecc., Per salvare o visitare i buffer? È C-c, ecc., Per la modifica del testo?

sfondo

Forse questa è una domanda sciocca. Uso una tastiera spagnola, e talvolta ridefinisco le combinazioni di tasti comuni per una tastiera inglese (QWERTY). Ad esempio: il comando shell è associato a Emacs vaniglia M-!. Lo vincolo M-¡invece, perché M-!è M-shift-1, che non riesco a premere facilmente. Mi chiedo se ci sono convenzioni che sto scavalcando quando apporto questo tipo di modifiche


come M-xper "esegui comando esteso, questo è il gateway per molte cose sofisticate che puoi eseguire interattivamente in Emacs; ti consente di eseguire qualsiasi funzione Elisp per nome". ha C-ce C-xnon ha una descrizione del genere?
Pinocchio,

Risposte:


21

Se stai parlando di chiavi vincolanti per il tuo uso, questa è la regola: puoi associare tutte le chiavi che ti piacciono.

Se vuoi essere sicuro di non associare una chiave che potrebbe essere già associata, usa C-cseguita da una lettera. Tutti questi tasti sono riservati agli utenti (vedi il prossimo).


Se stai parlando di chiavi vincolanti nel codice (ad esempio, una libreria) che scrivi, per l'uso da parte di altri, allora le regole (convenzioni) sono descritte qui: nodo Convenzioni di associazione chiave del manuale Elisp.

Le regole principali lì, relative a ciò che chiedi, sono quelle riguardanti C-c:

  • Non definire C-c LETTERcome chiave nei programmi Lisp. Le sequenze costituite da C-ce una lettera (maiuscole o minuscole) sono riservate agli utenti; sono le uniche sequenze riservate agli utenti, quindi non bloccarle.

  • Le sequenze composte da C-cseguite da un carattere di controllo o una cifra sono riservate alle modalità principali.

  • Sequenze costituiti C-cseguito {, }, <, >, : o ;sono riservati per i principali modi.

  • Le sequenze composte da C-cseguite da qualsiasi altra punteggiatura ASCII o carattere simbolo sono assegnate per le modalità secondarie. Il loro utilizzo in una modalità principale non è assolutamente proibito, ma se lo fai, la rilegatura in modalità principale può essere oscurata di volta in volta da modalità secondarie.

Noterai che non esiste una convenzione in merito C-x. Una convenzione non dichiarata, o solo una buona consulenza / pratica è questa, tuttavia: se si sostituisce un legame Emacs standard esistente (ovvero uno che si ottiene da Emacs come distribuito, senza caricare librerie di terze parti), ciò potrebbe confondere o infastidire alcuni utenti del tuo codice.


Puoi accedere a quel documento in Emacs, in questo modo:

  1. C-h i, per aprire Info, il browser documenti.
  2. m el TAB RET, per m enu el isp ( TABper completare), oppure fai clic sul Elispcollegamento con il mouse.
  3. key bi TAB, quindi n TAB RETper completare a Key Binding Conventions.

Oppure puoi utilizzare inel manuale Elisp per completare le voci di indice:

  1. C-h i m el TAB RET.
  2. i key bi TAB, che completa key bindinge mostra due possibilità: key bindinge key binding, conventions for. Digita , TABper completare fino al secondo, quindi RETper accettarlo.

È meglio seguire la convenzione per associare C-ce inviare una lettera ai comandi dell'utente. In questo modo si può essere (quasi) sicuri di non scavalcare altri collegamenti da una modalità principale già installata o da installare un giorno in futuro.
Tobias,

1
@Tobias: non sono sicuro di quello che stai dicendo. Meglio di cosa? Dovrebbero essere seguite tutte le convenzioni di associazione dei tasti, incluso l'associazione non obbligatoria C-c+ LETTERA in una libreria di terze parti.
Estratto il

Nelle prime frasi della tua risposta hai affermato correttamente che non esistono regole rigorose per l'uso privato. Tuttavia è consigliabile seguire le convenzioni per le associazioni dei tasti dell'utente per i motivi che ho dato nel mio primo commento. Forse, potresti aggiungere una nota a riguardo sotto la regola di tutto nella prima sezione. Questo è tutto ciò che volevo dire, Drew. Cordiali saluti,
Tobias,

3
@Tobias: ho aggiunto quello che penso tu stia dicendo; Grazie. Ma non ci sono nessun convenzioni per un utente di seguire riguardo alle combinazioni di tasti. Le "convenzioni per le associazioni dei tasti utente" di cui parli non sono convenzioni per gli utenti. Sono convenzioni per la codifica di Lisp che saranno utilizzate da altri. (So ​​che lo sai. Voglio solo essere chiaro, per chiunque legga questo.)
Ha

Che cos'è un personaggio di controllo?
Didier A.

2

La risposta di @ Drew è molto più sfumata e dettagliata.

Questa è una domanda perfettamente valida! Esiste la convenzione che il C-xè riservato da emacs stesso mentre il C-cprefisso viene utilizzato per le combinazioni di tasti definite dall'utente.

Dai un'occhiata a questo , in particolare alla sezione "Chiavi riservate". Sono abbastanza sicuro che queste informazioni siano riportate anche nel manuale di emacs, ma non riesco a trovarle proprio ora. Le convenzioni sono descritte in questa sezione del manuale di emacs lisp.


1
C-cseguita da una lettera (maiuscola o minuscola) senza ulteriori modificatori è riservata agli utenti. Molte altre sequenze di tasti che iniziano con C-csono riservate alle principali modalità, specialmente quelle in cui la seconda battuta del tasto viene modificata anche dal tasto di controllo.
Tobias,

Hai ragione, ovviamente. @Drew ha risposto a questa domanda molto meglio.
Panagiotis Koutsourakis,

come M-xper "esegui comando esteso, questo è il gateway per molte cose sofisticate che puoi eseguire interattivamente in Emacs; ti consente di eseguire qualsiasi funzione Elisp per nome". ha C-ce C-xnon ha una descrizione del genere?
Pinocchio,
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.