gtk-key-theme Emacs: qual è la sequenza di tasti per select-all?


22

Preferisco i tasti di emacs, ma select-all non sembra far parte del vocabolario di emacs, o almeno, il tema gtk-key per emacs. Mw non funziona per copiare la regione selezionata.

  1. Qual è la sequenza di tasti per selezionare tutto?
  2. Dov'è una mappa di associazione chiave per questo tema?

Grazie Steve

Risposte:


22

V'è un semplice vincolante per "Seleziona tutto" in gtk:C-/

È definito come un segnale GtkTextView generale e non specificamente parte del tema chiave di emacs. Ma funziona bene con esso. È definito come un'alternativa a C-a. Mentre quest'ultimo viene reinterpretato dal tema emacs C-/rimane valido per "Seleziona tutto".


Bella risposta. Perché non aveva ancora voti positivi?
Rörd,

7

Non esiste un singolo collegamento per farlo direttamente.

Puoi andare alla fine del testo con Ctrl- ee rimuovere una riga Ctrl- u. Questo, tuttavia, funziona solo con GtkEntry, cioè, un campo di input di una riga.

Se hai bisogno di selezionare tutto in a GtkTextView, il controllo simile a un editor a più righe, ti viene lasciato fare l'oneroso Ctrl- Homeseguito da Ctrl+ Shift- Endche, con la mia tastiera a 63 tasti, è quasi impossibile.

Se, per la buona ragione della modifica dell'efficienza o dei limiti delle tastiere del dispositivo mobile, Homee Endsei fuori dalla portata, dovrai cavartela. Selezionare "Seleziona tutto" dal menu "Modifica" è una cattiva idea, perché si associa a Alt- e- ain firefox, Alt- e- tin gedit, Alt- e- sin OpenOffice (anche con l'integrazione di gnome), in ogni software una chiave diversa, e in alcuni software non esiste un "Seleziona tutto" nel menu Modifica, come il cromo, e in alcuni software non esiste nemmeno il menu Modifica stesso, nemmeno uno nascosto da richiamare con Alt-e, come nautilus. Questa incoerenza batte lo scopo della barra dei menu attivata da Alt, e nessun sistema operativo, nemmeno Windows, è altrettanto incoerente. Anche il menu di scelta rapida non ha una scorciatoia fissa per "Seleziona tutto" - di solito è, ama può essere tda un'applicazione all'altra. Richiedere la correzione di bug in ogni singolo software può essere fatto solo con un meta-progetto come GNOME, ma sapere che GNOME stesso ha prodotto alcuni di questi problemi (la rimozione del menu Modifica in "nautilus" è una decisione di GNOME 3) in realtà non è andata via hai molte speranze.

In una nota a margine, Ctrl- Homeè l'unica scorciatoia per spostarsi all'inizio di tutto il testo, anche se può interrompere il lavoro per digitare i dispositivi mobili a tastiera piccola.

La risposta finisce qui. Per le menti curiose ho ulteriori informazioni:


Un utente emacs esperto tenterebbe Ctrl- x- h: emacs autentici, in effetti, ma nessuna sequenza di tasti di controllo è compresa dalla modalità emacs di gtk3. In effetti, solo una manciata di scorciatoie di emacs sono definite: - Dai un'occhiata a /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css; c'è abbastanza spazio su un adesivo per annotare tutte le scorciatoie emacs supportate.

A peggiorare la situazione, è difficile riposizionare un tasto di scelta rapida per questo scopo. Come sapete, Ctrl- aè preso da emacs. Ma anche gli ispanofoni, il più grande gruppo non di lingua inglese (cinese escluso perché usiamo gli ideografi), che sono abituati a selezionare tutto con Ctrl- e, troverebbero anche quella scorciatoia da tastiera presa da emacs. Escludendo e, non è rimasto nessun altro tasto nella metà sinistra di una tastiera QWERTY senza uno scopo già ben accettato. Google Translate prende il tasto MAIUSC, se premuto da solo, come 'seleziona tutto', ma non altri software né altri prodotti Google seguono l'impostazione.

Per svuotare una riga, utilizzare Ctrl- u. Questo ha il vantaggio di non sovrascrivere X SELECTION (quello che strattoni con il pulsante centrale del mouse). Questa è un'impostazione unica solo della modalità emacs di gtk3: in emacs reali non fa nulla da solo; a readline (bash, mysql ecc) si suppone per cancellare tutto, dai cursore all'inizio della riga, mentre la sua contro-parte Ctrl- kcancella tutto dal cursore alla fine della riga.

Alcuni potrebbero suggerire di lasciare un segno da qualche parte per la selezione casuale con la tastiera. Potresti anche trovare Ctrl: SPACEè in modalità emacs configurata per impostare un ancoraggio nel testo. Nonostante siano in conflitto con molti altri software (in particolare i metodi di input ideografici e il completamento automatico in alcuni altri software di editor), non esiste alcun tasto di scelta rapida per utilizzare l'ancoraggio impostato.


Ubuntu non sopprime ufficialmente la modalità di modifica di emacs, né qualsiasi altra configurazione dell'interfaccia utente che non può essere eseguita con l'interfaccia utente. Le segnalazioni di bug relative a tali esigenze sono contrassegnate come prioritarie. Per questo motivo penso che sia meglio porre questa domanda a luoghi generici di Linux, ad esempio superutente.


2

I binding di emacs sono specificati in /usr/share/themes/Emacs/gtk-2.0-key/gtkrc Puoi anche aggiungere un binding in ~ / .config / gtk-3.0 / gtk.css

Seleziona tutto sarebbe qualcosa del genere:

bind "<ctrl>h" { "move-cursor" (buffer-ends, -1, 0)
                 "move-cursor" (buffer-ends,  1, 1) };

Tuttavia, non ho trovato un modo per legarlo a Cx h.


2

Visualizza l'associazione chiave esistente

Per le applicazioni GTK3, è possibile visualizzare i collegamenti del tema chiave Emacs GTK - sia localmente, probabilmente su /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css) - o sul repository git GTK su GitHub (che non corrisponde necessariamente al file locale, poiché la distribuzione potrebbe averlo modificato) .

Durante la lettura di questo file, devi essere consapevole del significato dei widget

(Guarda l'immagine nella parte superiore di ogni sito collegato.)

Aggiunta dell'associazione chiave per selezionare tutto

select-allper GtkTreeVieweGtkTextView

Per GtkTreeViewe GtkTextViewwidget, c'è un segnale chiamato select-all. Devi passare l'argomento in 1modo che selezioni tutto anziché deselezionare.

Quindi, modifica ~/.config/gtk-3.0/gtk.csse aggiungi qualcosa del genere:

@binding-set my-text-and-tree-view-bindings
{
    bind "<alt>a"
    {
    "select-all" (1)
    };
}

textview {
  -gtk-key-bindings: my-text-and-tree-view-bindings;
}

treeview {
  -gtk-key-bindings: my-text-and-tree-view-bindings;
}

GtkEntry

Perché GtkEntrynon c'è select-allsegnale. Invece puoi usare una sequenza di due move-cursorsegnali che segnano il testo.

Ancora una volta, modifica ~/.config/gtk-3.0/gtk.csse aggiungi qualcosa del genere:

@binding-set my-entry-bindings
{
    bind "<alt>a"
    {
    "move-cursor" (paragraph-ends, -1, 0)
    "move-cursor" (paragraph-ends,  1, 1)
    };
}

entry {
  -gtk-key-bindings: my-entry-bindings;
}

Firefox

A proposito, in Firefox Alt: aseleziona tutto per impostazione predefinita senza configurazione (usando il tema chiave Emacs GTK).


1

Se vuoi selezionare tutto il testo in una regione, preferisco definire una semplice Macro per quello. Premere F3 per iniziare a scrivere una macro. Quindi digitare

Esc - <          // goes to beginning of document
Ctrl - spacebar  // set mark
Esc - >          // selects all till end of document

Quindi utilizzare M-w per la copia (che è quello che faccio normalmente per la copia da sistemi unix remoti a Windows locale) e quindi premere F4 per terminare la definizione della macro.

Ora hai finito di definire la Macro, premi F4 quante volte vuoi ripetere l'azione.


Il tema chiave di GTK Emacs non è lo stesso di Emacs stesso. Quasi nessuna delle associazioni chiave nella tua risposta funziona lì (e se tu fossi effettivamente in Emacs stesso, potresti semplicemente usare Cx h invece di una macro.
Rörd

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.