GNU/Linux >> Linux Esercitazione >  >> Linux

Iniziare con Emacs:Spiegazione dei comandi di base

Ci sono molti editor basati su testo in Linux. Alcuni vengono con la maggior parte delle distribuzioni, altri devono essere installati dopo il fatto. Gli editor basati su testo sono uno strumento importante per qualsiasi utente o amministratore Linux. I server spesso non hanno una GUI e, sebbene Linux di per sé sia ​​molto stabile, ho visto molte volte la GUI crash. Quando perdi la GUI, è d'obbligo disporre di una serie di strumenti basati su testo con cui ti senti a tuo agio.

Prima di iniziare con le basi del funzionamento di GNU Emacs, voglio prima chiarire qualcosa. Probabilmente sei a conoscenza della guerra "Emacs Vs Vim" che è responsabile di molte discussioni surriscaldate. Adoro Vim, l'ho usato per oltre un decennio. Ma ecco la cosa su Emacs, non è solo un editor di testo.

Nel suo nucleo, Emacs potrebbe essere semplicemente descritto come un framework di buffer e frame. I frame sono il modo in cui dividi le finestre, puoi avere tutti i frame che desideri. In modalità GUI, puoi avere più finestre di Emacs, ognuna contenente uno o più frame. Quindi hai i buffer, i buffer sono pieni di contenuti alimentati da qualche parte. Quando si alimenta un buffer con un file, Emacs svolge il ruolo di editor di testo. Puoi persino usare Emacs come gestore di finestre.

Acquisisci familiarità con il layout di Emacs

Per prima cosa, concentriamoci sulle basi. Qui imparerai le basi del funzionamento di Emacs.

Emacs può essere installato direttamente attraverso la gestione dei pacchetti della tua distribuzione. Dopo l'installazione, l'avvio di Emacs avvierà la modalità GUI. Questa modalità può essere utile all'avvio, poiché fornisce un accesso alla barra dei menu. È importante ricordare che ogni voce di menu esegue semplicemente un comando Emacs e tutto questo può essere fatto in modalità testo. Per forzare la modalità testo in un ambiente GUI, esegui emacs –nw in un terminale.

Quando avvii Emacs per la prima volta, ti verrà presentata una schermata di benvenuto. Questa schermata mostra già più funzionalità di Emacs. I testi sottolineati sono link, possono essere attivati ​​con un click del mouse o premere invio con il cursore su uno. Alcuni sono collegamenti a una pagina Web, che molto probabilmente aprirebbe eww (browser Web integrato in Emacs). C'è anche un tutorial integrato in quella pagina.

Il tuo layout iniziale consisterà in un singolo frame, molto probabilmente contenente il contenuto di about Emacs. Sotto la cornice, hai la barra di stato e quello che sembra essere uno spazio vuoto sotto la barra di stato. Questo spazio vuoto è in realtà un mini-buffer che Emacs usa per interagire con te. Nell'immagine, il mini-buffer ha il testo non è definito.

Il concetto essenziale di key binding in Emacs

La combinazione di tasti (o scorciatoie da tastiera) è il modo in cui comandi Emacs. Inizia sempre con un'associazione di tasti.

Emacs usa i tasti modificatori come prefisso di associazione dei tasti. I modificatori più importanti sono C (Ctrl), M (Meta), S (Shift). M (Meta, solitamente assegnato ad ALT).

Per riassumere, la convenzione chiave è:

  • C =Ctrl
  • M =Meta =Alt
  • S =Maiusc

Onestamente penso che il key binding sia uno dei motivi principali per cui le persone si allontanano dall'apprendimento di Emacs. Ci sono oltre 1300 associazioni di tasti in una configurazione Emacs predefinita. Ma non dimenticare, Emacs è solo un editor di testo durante la modifica dei file, quelle oltre 1300 combinazioni di tasti fanno molto di più che modificare i file.

Quindi, come si inizia a imparare Emacs e la sua ossessione per le associazioni dei tasti? È abbastanza semplice, l'idea di base è quella di esercitarsi con pochi tasti alla volta, diventeranno memoria muscolare molto rapidamente. Quando registro video lezioni su Emacs, dico la rilegatura dei tasti mentre li premo, beh almeno ci provo. La verità è che la sequenza di tasti viene eseguita ed elaborata da tempo mentre sto ancora cercando di capire quali fossero. La parte più grande e difficile è questo documento.

Iniziamo e ricordati di esercitarti molto con la rilegatura dei tasti!

Il modo migliore per spiegare come scriviamo l'associazione dei tasti è con alcuni esempi. Tuttavia, non tutti gli esempi sono associazione di tasti funzionali:

  • C-x =CTRL+x
  • C-x 2 =Premere CTRL e x poi premere 2 (il tasto CTRL deve essere rilasciato prima di premere 2)
  • C-x C-2 =Premi CTRL e x poi CTRL e 2. Oppure CTRL-x-2 (non rilasciare CTRL)
  • Comando M-x =Premi META+x

Vedrai regolarmente anche nella documentazione la rilegatura dei tasti scritta con il testo in ().

C-x C-f (find-file)

Il testo all'interno () rappresenta la funzione Emacs che verrà eseguita con questa associazione di tasti. Presto diventerà chiaro perché questo è importante.

Le chiavi preferite di Emacs sono CTRL e ALT. Sebbene il tasto ALT non rappresenti un problema, è noto che l'uso estensivo del tasto CTRL sinistro causa problemi al mignolo. Puoi facilmente usare xmodmap per scambiare i tasti CTRL e MAIUSC o qualsiasi altro tasto che preferisci.

Utilizzo di Emacs con le associazioni di tasti, ovvero i comandi Emacs

Come accennato in precedenza, concentrati sull'apprendimento di alcune associazioni chiave alla volta, diventeranno memoria muscolare. Il primo set è la parte più difficile ma ti basterà per iniziare a lavorare con Emacs come editor di testo.

Manipolazione dei frame
C-x 2 dividi-finestra-sotto
C-x 3 dividi-finestra-destra
C-x o altra finestra
C-x 1 elimina-altra-finestra
C-x 0 cancella finestra
Manipolazione dei buffer
C-x b passa al buffer
C-x C-B list-buffer
C-xk buffer di uccisione
Apri e salva file
C-x C-f trova-file
C-x C-s salva-buffer
Cerca e sostituisci
C-s ricerca in avanti
C-r ricerca indietro
Seleziona, taglia, copia e incolla
C- set-mark-comando
C-w regione di uccisioni
M-w kill-ring-salvataggio
C-y strappare
Esecuzione dei comandi
M-x esegui-comando-esteso

Parliamo di questi in dettaglio.

Manipolazione dei frame in Emacs

Come accennato in precedenza, i frame sono il modo in cui Emacs divide la sua finestra. Prima di conoscere il buffer, diamo un'occhiata a come dividiamo il nostro schermo.

  • C-x 2 dividerà il fotogramma corrente orizzontalmente.
  • C-x 3 dividerà verticalmente il fotogramma corrente.
  • C-x o sposterà la messa a fuoco al fotogramma successivo. Se il minibuffer è attivo, farà parte del ciclo.
  • C-x 1 chiuderà tutti gli altri frame, lasciando solo il frame corrente. Non chiude i buffer.
  • C-x 0 chiude il fotogramma corrente.

L'immagine sotto mostra molti fotogrammi, alcuni mostrano lo stesso buffer ma con un cursore in una posizione diversa.

Manipolazione dei buffer in Emacs

  • C-x b (passa al buffer)
  • C-x C-B (list-buffer)
  • C-x k (kill-buffer)

I buffer sono ciò con cui lavori, i buffer contengono dati, principalmente testo. Quando apri un file, il contenuto di quel file viene inserito in un buffer. Questo buffer prenderà il nome dal nome del file. Quindi lavori all'interno del buffer. Le modifiche vengono applicate all'origine (file) quando viene richiesto il salvataggio. Di default Emacs ha il salvataggio automatico. Non salva ogni x minuti, ma ogni x modifiche apportate al buffer. Un buffer aperto senza modifiche non attiverà il salvataggio automatico.

Per passare a un buffer diverso, premi C-x b, il minibuffer si attiverà ed è pronto a ricevere il nome del buffer. Il completamento automatico è associato al tasto . Se sono possibili corrispondenze multiple, premere una seconda volta creerà un buffer temporaneo con tutte le corrispondenze possibili. Se si fornisce un nome di buffer non esistente, verrà creato un nuovo buffer. Questo NON crea un nuovo file. Lo uso spesso per creare un buffer temporaneo.

Non ci vuole tempo per avere molti buffer e potresti non ricordarli tutti. Per elencare tutti i buffer attualmente aperti, premi C-x C-b . Un nuovo buffer si aprirà in un frame diviso con l'elenco completo dei buffer. Puoi manovrare all'interno di quel buffer con il tasto freccia e passare al buffer in un punto con .

Dall'elenco del buffer, puoi contrassegnare la voce al punto per:

  • salvataggio premendo s
  • Eliminazione (uccidi il buffer, non elimina il file) premendo d oppure k
  • Rimuovi le bandiere premendo u
  • Esegui tutti i flag contrassegnati premendo x

Per terminare qualsiasi buffer, premi C-x k il mini buffer si attiverà e attenderà un nome del buffer, puoi inserire qualsiasi nome del buffer esistente e premere . Se non fornisci un nome e premi , Emacs chiuderà il buffer corrente.

L'immagine seguente mostra l'elenco dei buffer con i buffer contrassegnati per il salvataggio o l'eliminazione.

Apri e salva file in Emacs

  • C-x C-f (trova-file)
  • C-x C-s (buffer di salvataggio)

La maggior parte delle volte è necessario lavorare con i file. Inizia aprendo un file premendo C-x C-f. Il mini buffer ti presenta un percorso ed è pronto per te per inserire il percorso per il file che desideri aprire. Il completamento automatico funziona anche qui, completerà automaticamente la directory e i nomi dei file. Quando sei soddisfatto del percorso del file, premi . Si aprirà un nuovo buffer con il contenuto del file. Il buffer prenderà il nome dal file. Una volta che un buffer è stato modificato, 2 stelle appariranno sul lato sinistro della barra di stato. Per salvare la modifica:C-x C-s

Se fornisci un percorso a un file inesistente dopo aver premuto C-x C-f, verrà creato un nuovo buffer ma il file verrà creato solo quando salvi il buffer.

Se fornisci un percorso di directory dopo C-x C-f, verrà aperto un nuovo buffer con il contenuto della directory. Questo nuovo buffer sarà in modalità DIRED. Mentre sei in modalità DIRED puoi manovrare con i tasti freccia. Una volta sul file desiderato, premere e verrà aperto in un nuovo buffer. Se scegli nuovamente di premere su una directory, ancora una volta verrà aperto un nuovo buffer in modalità DIRED.

Molte operazioni possono essere eseguite sul filesystem in modalità DIRED, ma come spiegato in precedenza, concentriamoci prima sulle basi.

Quando lavori su un sistema Linux devi spesso lavorare su file che richiedono l'accesso come root. Emacs lo gestisce molto bene. Non chiudere Emacs ed eseguirlo come root, questa non è una buona idea.

Premi C-x C-f quindi procedere a cancellare il percorso indicato nel minibuffer e sostituirlo con /sudo::/path/to/file . Emacs tenterà di aprire il file con il comando sudo and se richiesta ti verrà richiesta la password.

Se tenti di utilizzare il completamento automatico , la tua password verrà richiesta se necessario e il completamento automatico funzionerà. La modalità DIRED può essere aperta come root. Nota che un nuovo buffer chiamato *tramp/sudo …. verrà creato. Questo è un buffer necessario a Emacs per gestire sudo.

Se dovessi rimuoverlo, anche se non consigliato, molto probabilmente ti verrà chiesta la password quando tenti di salvare e il buffer del vagabondo tornerà. L'apertura di più buffer come root risulterà in più buffer di vagabondaggio.

È facile aprire un file su un computer remoto usando ssh da Emacs:

C-x C-f /ssh:[email protected]:/path/to/file

Dovresti chiederti di aprire un file su un sistema remoto come root? Sì, ma questo lo terrò per un'altra volta.

Questa immagine mostra nel frame di sinistra la modalità DIRED della mia home directory e a destra il mio file .emacs.

Cerca e sostituisci in Emacs

  • C-s (isearch-forward)
  • C-r (isearch-indietro)
  • M-% (query-replace)

Per eseguire una ricerca in avanti, premi C-s questo attiverà il minibuffer per inserire il testo da cercare. La ricerca avviene durante la digitazione. Per passare alla partita successiva, premi C-s ancora. La ricerca andrà a capo ma dopo averti avvisato una volta. Nota che premendo backspace si torna indietro nella partita precedente prima di eliminare un personaggio.

Per eseguire la ricerca all'indietro, premi C-r

Per sostituire, premere M-% e avrai quindi il minibuffer pronto per prendere il parametro di ricerca. Inseriscilo e premi , quindi procedi a fornire la stringa sostitutiva e premi .

La ricerca e la sostituzione verranno eseguite dal cursore alla fine del buffer.

Seleziona, taglia, copia e incolla in Emacs

  • C- (set-mark-command)
  • C-w (regione di uccisione)
  • M-w (kill-ring-save)
  • C-y (strattone)
  • M-y (yank-pop)

Emacs ha un concetto completamente diverso di seleziona, taglia, copia e incolla. Per prima cosa, diamo un'occhiata alla selezione. Mentre il mouse funziona molto bene in modalità GUI, imparare a non usarlo ripagherà quando la GUI non c'è più. Quella che tu chiami un'area selezionata, Emacs ha chiamato una regione attiva. Per effettuare una selezione o attivare una regione, posizionare il cursore all'inizio dell'area desiderata, quindi premere C- sposta il cursore di 1 carattere oltre la fine dell'area desiderata. Questa regione viene attivata automaticamente. Anche se questo concetto di regione attiva può sembrare inutile ora, è importante capirlo quando inizi a creare funzioni per automatizzare le attività ripetitive.

Emacs non taglia, uccide. Quando uccidi una regione attiva con C-w , Emacs lo "taglierà" dal buffer e lo salverà in un kill ring. Il kill ring mantiene più voci uccise C-w o copiato M-w . Puoi quindi strappare (incollare) quelle voci fuori dal kill ring e nel buffer corrente al punto con C-y . Se subito dopo aver premuto C-y procedi con M-y, la voce che era incollata nel buffer dal kill ring verrà sostituita con la precedente. Tirare una voce dal kill ring NON la rimuove dal kill ring e può essere nuovamente strappata in seguito.

Esegui comando esteso in Emacs

  • M-x (esegui-comando-esteso)

Meta-x è un'associazione di chiavi univoca. Dopo aver premuto la combinazione di tasti, guarda il mini buffer. Il tuo cursore verrà automaticamente posizionato lì e su Emacs ed è pronto per ricevere un comando.

I comandi per le associazioni dei tasti sono scritti tra parentesi. Non digitare le parentesi durante la digitazione del comando. Dopo aver scritto il comando, premi .

È comune vedere il comando M-x scritto nel seguente formato:

M-x find-file <RET> ~/path/to/file <RET>

Si noti che il completamento automatico è supportato con il tasto

Perché conoscere il comando quando posso usare l'associazione dei tasti? Innanzitutto, anche con oltre 1300 associazioni di tasti, non tutti i comandi ne hanno uno. Comandi anche questo ti dà il potere di scrivere funzioni per eseguire le modifiche desiderate in un'area selezionata (regione attiva) o nell'intero buffer. Tali funzioni possono quindi essere richiamate con NomefunzioneM-x e se necessario legato a una combinazione di tasti a tua scelta.

Un comando che vale la pena mostrare a un nuovo utente è M-x shell . Ricorda come ho detto Emacs non è solo un editor di testo. Il comando precedente aprirà un nuovo buffer con un prompt della shell. Questo non è un emulatore di terminale completo, ad esempio, non gestisce molto bene l'applicazione basata su curl. Il display non viene aggiornato correttamente. Ma ha altri vantaggi. Questo buffer di shell è un buffer di testo di lettura/scrittura. Quando posizioni il cursore alla fine e digiti un comando, premi   , il comando viene inviato a una subshell e l'output viene aggiunto al buffer. Ciò ti consente di cercare facilmente avanti e indietro, copiare e incollare, selezionare un'intera regione e persino salvare il contenuto del buffer in un file.

Il secondo comando più importante da imparare è M-x ren-buf NewBufferName . Questo comando consente di rinominare il buffer corrente. Se il buffer contiene il contenuto di un file, questo non rinominerà il file. Questo è utile quando hai bisogno di più di una shell. Se si digita M-x shell e tu ne hai uno aperto, produrrà quello esistente. Rinominare il buffer *shell* per aprire più shell. Emacs ha anche eshell e term, ma questo va oltre il nostro scopo attuale.

Conclusione

Questo articolo rappresenta una breve e veloce introduzione a Emacs. Hai imparato i comandi di base di Emacs e le associazioni dei tasti e alcuni concetti di base sull'editing con Emacs.

C'è molto di più che può fare per te. Con oltre 4000 pacchetti disponibili per l'installazione con il sistema di gestione dei pacchetti integrato Emacs. La flessibilità che offre è sorprendente. Emacs crescerà e si evolverà con te.

Per ulteriori informazioni su Emacs e altri argomenti su Linux, seguimi su Facebook:Imparare Linux con Eric Simard


Linux
  1. Iniziare con Zsh

  2. 20 comandi Linux di base per principianti spiegati con esempi

  3. Iniziare con ls

  4. Iniziare con Samba per l'interoperabilità

  5. Iniziare con PostgreSQL su Linux

Introduzione al sistema operativo Linux

Guida introduttiva a GitHub

Guida introduttiva ai comandi ad hoc di Ansible

Iniziare con Nix Package Manager

Iniziare con systemctl

Introduzione ai comandi di Pacman nelle distribuzioni Linux basate su Arch