gtk-key-theme Emacs: quelle touche est pour tout sélectionner?

22

Je préfère les frappes emacs, mais select-all ne semble pas faire partie du vocabulaire emacs, ou du moins, le thème gtk-key-emacs. Mw ne fonctionne pas pour copier la région sélectionnée.

  1. Quelle est la séquence de touches pour tout sélectionner?
  2. Où est une carte de liaison clé pour ce thème?

Merci, Steve

Chelmite
la source

Réponses:

22

Il existe une liaison simple pour "Tout sélectionner" dans gtk:C-/

Il est défini comme un signal GtkTextView général et ne fait pas spécifiquement partie du thème clé emacs. Mais ça marche bien avec ça. Il est défini comme une alternative à C-a. Alors que ce dernier est réinterprété par le thème emacs, il C-/reste valable pour "Tout sélectionner".

Victor
la source
Très bonne réponse. Pourquoi n'a-t-il pas encore eu de votes positifs?
Rörd
7

Il n'y a pas un seul raccourci pour le faire directement.

Vous pouvez aller à la fin du texte avec Ctrl- eet supprimer une ligne Ctrl- u. Ceci, cependant, ne fonctionne qu'avec GtkEntry, c'est-à-dire un champ de saisie sur une ligne.

Si vous avez besoin de tout sélectionner dans un GtkTextView, le contrôle de type éditeur multi-lignes, il vous reste à faire la lourde Ctrl- Homesuivie de Ctrl+ Shift- End, ce qui, avec mon clavier à 63 touches est presque impossible.

Si, pour la bonne raison de modifier l'efficacité ou les limitations des claviers des appareils mobiles, Homeet que vous Endêtes hors de portée, vous devrez vous débrouiller. La sélection de "Tout sélectionner" dans le menu "Edition" est une mauvaise idée, car elle correspond à Alt- e- adans firefox, Alt- e- tdans gedit, Alt- e- sdans OpenOffice (même avec l'intégration de gnome), dans chaque logiciel une clé différente, et dans certains logiciels, il n'y a pas de "Tout sélectionner" dans le menu Édition, comme le chrome, et dans certains logiciels, il n'y a même pas de menu Édition lui-même, pas même un menu caché à appeler avec Alt-e, comme le nautile. Cette incohérence bat l'objectif de la barre de menus activée par Alt, et aucun système d'exploitation, pas même Windows, n'est aussi incohérent. Même le menu contextuel n'a pas de raccourci fixe pour "Sélectionner tout" - il l'est généralement amais peut être td'une application à l'autre. L'appel à la correction de bogues dans chaque logiciel individuel ne peut se faire qu'avec un méta-projet comme GNOME, mais sachant que GNOME lui-même a produit certains de ces problèmes (la suppression du menu d'édition dans 'nautilus' est une décision GNOME 3) n'a vraiment pas laissé vous espérez beaucoup.

Sur une note latérale, Ctrl- Homeest le seul raccourci pour passer au début de tout le texte, même il peut interrompre votre travail pour saisir des appareils mobiles à petit clavier.

La réponse se termine ici. Pour les esprits curieux, j'ai des informations supplémentaires:


Un utilisateur emacs chevronné tenterait Ctrl- x- h: des emacs authentiques en effet, mais aucune séquence de touches de contrôle n'est comprise par le mode emacs de gtk3. En fait, seule une poignée de raccourcis emacs sont définis - Jetez un œil à /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css; il y a suffisamment d'espace sur un autocollant pour noter tous les raccourcis emacs pris en charge.

Pour aggraver la situation, il est difficile de déplacer un raccourci clavier à cet effet. Comme vous le savez, Ctrl- aest pris par emacs. Mais même les hispanophones, le plus grand groupe non anglophone (chinois exclus car nous utilisons des idéogrammes), qui sont habitués à tout sélectionner avec Ctrl- e, trouveraient également ce raccourci clavier pris par emacs. À l'exclusion e, il ne reste aucune autre touche dans la moitié gauche d'un clavier QWERTY sans un objectif déjà bien accepté. Google Translate prend la touche MAJ, lorsqu'il est pressé seul, comme «tout sélectionner», mais aucun autre logiciel ni aucun autre produit Google ne suit le réglage.

Pour vider une ligne, utilisez Ctrl- u. Cela a l'avantage de ne pas écraser X SELECTION (celui que vous tirez avec le bouton central de la souris). Il s'agit d'un paramètre unique du mode emacs de gtk3: dans les emacs réels, il ne fait rien par lui-même; dans readline (bash, mysql, etc.), il est censé tout supprimer du curseur au début de la ligne, tandis que sa contrepartie Ctrl- ksupprime tout du curseur à la fin de la ligne.

Certains peuvent vous suggérer de laisser une marque quelque part pour une sélection aléatoire avec le clavier. Vous pouvez également trouver Ctrl- SPACEest en mode emacs configuré pour définir une ancre dans le texte. Malgré les conflits avec de nombreux autres logiciels (méthodes de saisie idéographique en particulier et auto-complétion dans certains autres logiciels d'édition), il n'y a pas de touche de raccourci pour utiliser l'ancre que vous avez définie.


Ubuntu ne supprime pas officiellement le mode d'édition emacs, ni aucune autre configuration d'interface utilisateur qui ne peut pas être effectuée avec l'interface utilisateur. Les rapports de bogues concernant de tels besoins sont marqués comme prioritaires. Pour cette raison, je pense qu'il est préférable de poser une telle question à des endroits génériques Linux, par exemple un superutilisateur.

Zhang Weiwu
la source
2

Les liaisons emacs sont spécifiées dans /usr/share/themes/Emacs/gtk-2.0-key/gtkrc Vous pouvez également ajouter une liaison dans ~ / .config / gtk-3.0 / gtk.css

Tout sélectionner serait quelque chose comme ceci:

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

Cependant, je n'ai pas trouvé de moyen de le lier à Cx h.

emacser
la source
2

Afficher la liaison de clés existante

Pour les applications GTK3, vous pouvez afficher les liaisons du thème clé Emacs GTK - soit localement, probablement sur /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css) - soit sur le référentiel git GTK sur GitHub (qui n'est pas nécessairement égal à votre fichier local, car votre distribution pourrait l'avoir modifié) .

En lisant ce fichier, vous devez être conscient de la signification des widgets

(Regardez l'image en haut de chaque site lié.)

Ajout d'une liaison de touches pour tout sélectionner

select-allpour GtkTreeViewetGtkTextView

Pour les widgets GtkTreeViewet GtkTextView, un signal est appelé select-all. Vous devez lui passer l'argument 1pour qu'il sélectionne tout plutôt que de le désélectionner.

Donc, éditez ~/.config/gtk-3.0/gtk.csset ajoutez quelque chose comme ceci:

@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

Car GtkEntryil n'y a pas de select-allsignal. Au lieu de cela, vous pouvez utiliser une séquence de deux move-cursorsignaux marquant le texte.

Encore une fois, modifiez ~/.config/gtk-3.0/gtk.csset ajoutez quelque chose comme ceci:

@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

Par ailleurs, dans Firefox Alt- asélectionne tout pour moi par défaut sans configuration (en utilisant le thème clé Emacs GTK).

Mekeor Melire
la source
1

Si vous souhaitez sélectionner tout le texte dans une région, je préfère définir une macro simple pour cela. Appuyez sur F3 pour commencer à écrire une macro. Tapez ensuite

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

Ensuite, utilisez M -w pour copier (ce que je fais normalement pour copier des systèmes Unix distants vers Windows local), puis appuyez sur F4 pour terminer la définition de la macro.

Maintenant que vous avez fini de définir la macro, appuyez simplement sur F4 autant de fois que vous voulez répéter l'action.

Prashanth R
la source
Le thème clé de GTK Emacs n'est pas le même que Emacs lui-même. Presque aucune des liaisons clés de votre réponse n'y fonctionne (et si vous étiez réellement dans Emacs lui-même, vous pouvez simplement utiliser Cx h au lieu d'une macro.
Rörd