Keybinds in Emacs

Leonardo Tamiano

Created: 2021-12-25 sab 02:05

Overview

Utilizzando lo schema introdotto nel video precedente possiamo inquadrare i concetti che affronteremo in questo video.

Nozioni Base

Introduciamo adesso due requisiti necessari per poter conoscere il funzionamento dei keybinds in Emacs.

Modificatori

I modificatori sono dei tasti che modificano il comportamento degli altri tasti.

Un tipico modificatore è il tasto SHIFT, che ci permette di scrivere le lettere in MAIUSCOLO.

In emacs i modificatori più comunemente utilizzati sono i seguenti

  • CONTROL, abbreviato con CTRL o C.
  • META, abbreviato con M.
  • ESC, può essere utilizzato per simulare il META premendolo e poi rilasciandolo.
  • SHIFT.

Tipicamente però bastano e avanzano i primi due (control e meta).

Meta?

Il nome meta potrebbe confondere, dato che nelle tastiere moderne non appare nessun tasto con questo nome.

Questo nome, come altri nomi in Emacs, è stato ereditato dalle tastiere del passato, che contenevano anche un tasto meta.

Source: Wikipedia

In ogni caso, il tasto meta non è altro che il moderno tasto alt (quello a sinistra).

Source: snappygoat.com

Notazione

I modificatori sono combinati assieme ad altri tasti della tastiera per formare delle sequenze particolari di tasti.

Per descrivere queste sequenze viene utilizzata la seguente notazione:

C-<char>, per dire:
-------------------
  tieni premuto il modificatore CONTROL,
  e premi il tasto <char>.
M-<char>, per dire:
-------------------
  tieni premuto il modificatore META,
  e premi il tasto <char>.

Ad esempio…

C-x ---> Tieni premuto CTRL e premi x
C-c ---> Tieni premuto CTRL e premi c
M-h ---> Tieni premuto META e premi h

Certe volte possiamo combinare queste sequenze atomiche tra loro per ottenere sequenze più complesse

<modifier>-<char> <remaining>, per dire:
-----------------------------------
  tieni premuto <modifier>, premi il tasto <char>,
  rilascia <modifier> e premi i restanti tasti in <remaining>.

Ad esempio…

C-x M-n ---> Tieni premuto CTRL, premi x, rilascia CTRL
             tieni premuto Meta, premi n

C-h M-x ---> Tieni premuto CTRL, premi h, rilascia CTRL
             tieni premuto Meta, premi x

Nel caso in cui la coppia <modifier>-<char> successiva condivide lo stesso modificatore della coppia precedente, non dobbiamo rilasciare il modificatore, ma possiamo direttamente premere il prossimo carattere.

C-c C-e ---> Tieni premuto CTR, premi 'x' e poi 'e'
C-x C-s ---> Tieni premuto CTR, premi 'x' e poi 's'

Keybinds Fondamentali

Ad alcune sequenze di tasti in Emacs possiamo associare un particolare comando, identificato tramite il nome simbolico della rispettiva funzione elisp che implementa tale comando.

Questa associazione viene effettuata tramite l'operazione di binding.

Un keybind è quindi un tasto (o una particolare sequenza di tasti) a cui è stato associato un comando.

Quando premiamo correttamente il keybind, Emacs eseguirà il comando associato al keybind tramite il binding.

Andiamo adesso a vedere i keybinds associati ai comandi più importanti in Emacs.

Generali

Tra i keybind fondamentali da sapere, troviamo sicuramente i seguenti

Keybind Comando
C-x C-c save-buffers-kill-terminal
C-g keyboard-quit

Movimento

Per quanto riguarda il movimento (base) del cursore troviamo

Keybind Comando
C-p previous-line
C-n next-line
C-b backward-char
C-f forward-char

Text Editing

I comandi di base per fare text editing invece sono

Keybind Comando
C-x C-f find-file
C-x C-v find-alternative-file
C-x C-s save-buffer
C-x C-w write-file

Documentazione Interna

Riportiamo infine i comandi utilizzati per accedere alla documentazione interna.

Keybind Comando
C-h k describe-key
C-h f describe-function
C-h v describe-variable

Esercizi

Nel corso dei video proporro per ogni argomento introdotto una serie di esercizi.

Consiglio a coloro interessati ad imparare Emacs di provare a svolgere gli esercizi per conto proprio, e solo successivamente vedere come io li svolgo nel video.

Task #1

Aprire Emacs
Aprire nuovo file
Copiare il testo che segue nella slide successiva a mano
Salvare il file
Chiudere Emacs

Il testo da copiare è il seguente, ed è ripreso dal Castello di Kafka.

Amalia invece non si è limitata a sopportare la pena, lei aveva
anche l'intelligenza per capirla fino in fondo; noi scorgevamo
solo le conseguenze, lei anche la causa, noi speravamo in qualche
mezzuccio, lei sapeva che tutto era ormai deciso, noi potevamo
bisbigliare fra di noi, lei non poteva che tacere: lei si trovava
faccia a faccia con la verità, eppure ha vissuto e sopportato
questa vita, oggi come allora.

Noi tutti, pur nella nostra miseria, stavamo meglio di lei.

Task #2

Aprire Emacs
Aprire file /etc/passwd
Salvare il file in ~/my_passwd
Modificare il file a piacimento
Salvare il file
Chiudere Emacs

Task #3

Aprire Emacs
Cercare il file ~/nomelungo.txt
Annullare il comando precedente prima di aprire il buffer
Chiudere Emacs

Task #4

Aprire Emacs
Leggere la doc. della funzione "insert-file"
Leggere la doc. del keybind "C-h t"
Leggere la doc. della variable "inhibit-startup-screen"

Extra (codice elisp)

Per finire, voglio riportare brevemente come extra del codice elisp che può essere utilizzato per create o modificare i keybinds in Emacs.

Il codice è il seguente, e fa utilizzo della funzione global-set-key

(global-set-key (kbd "C-x t") 'mu4e)
(global-set-key (kbd "C-c q") 'query-replace)
(global-set-key (kbd "C-c v") 'my/vterm-window-split)