Comment configurer le comportement du double clic dans un terminal X?


16

Sous différents systèmes Unix / Linux, j'ai observé différents comportements de double-clic dans les applications de terminal X (par exemple xterm).

Parfois, un double clic sélectionne tout à gauche et à droite jusqu'au caractère non alphabétique suivant (par exemple, il sélectionne le mot sous le curseur).

Parfois, tout jusqu'à ce que le prochain blanc / eol soit sélectionné (par exemple, les chemins complets sous le curseur sont sélectionnés).

Comment puis-je configurer le comportement du double clic - disons - dans xterm (car il est disponible sur la plupart des systèmes)?

Actuellement, je trouve le 2ème mode plus pratique pour la plupart des cas d'utilisation.

Réponses:


19

Vous le faites avec X ressources. J'ai un fichier .Xresources,, qui contient ces ressources liées à xterm:

XTerm*VT100.cutNewLine: false
XTerm*VT100.cutToBeginningOfLine: false
XTerm*VT100.charClass: 33:48,35:48,37:48,42:48,45-47:48,64:48,95:48,126:48

Dans mon .xinitrcdossier, j'ai une ligne qui fusionne dans ces ressources:

if [ -f $userresources ]; then
    /usr/X11/bin/xrdb -merge $userresources
fi

Ces lignes font que les double-clics et les triple-clics xterm font ce que j'aime:

Un double-clic considère un "mot" comme incluant une barre oblique (/), un point (.), Un astérisque (*) et quelques autres caractères non alphanumériques. C'est la ressource "charClass". J'ai dû faire un peu fastidieux avec cette charClass pour qu'elle fasse ce que je veux. Cela vous permet principalement de double-cliquer sur les URL et les chemins d'accès entièrement ou partiellement qualifiés pour les mettre en surbrillance.

Les deux autres lignes font un triple clic à partir du mot sous la souris, et vont à la fin de la ligne, mais n'incluent aucune nouvelle ligne. De cette façon, vous pouvez triple-cliquer sur une commande que vous venez d'exécuter, la coller dans une autre fenêtre, et comme elle n'a pas de nouvelle ligne, vous pouvez la modifier avant de l'exécuter dans l'autre fenêtre.

Le Wiki Arch a un article sur les ressources X , y compris une section sur les ressources xterm, mais ces ressources xterm ne sont pas complètes.


1
Les wikis peuvent être utiles, mais l'endroit à consulter pour les ressources xterm est sa page de manuel .
Thomas Dickey

Ou utilisez XTerm*VT100.charClass: 0-32:0,33-65535:1. Un double-clic considérera alors un «mot» comme n'importe quelle séquence de symboles à l'exclusion des espaces (et des caractères de contrôle).
Newtonx

La règle des espaces blancs n'est pas bonne si vous voulez obtenir ce qui se trouve à l'intérieur des guillemets, par exemple dans un onlineur json. Mais je suppose que cela dépend de votre utilisation. L'extrait fourni dans cette réponse est parfait pour moi.
Jean-Bernard Jansen

Vous avez une erreur: cutNewLine-> cutNewline. Peut-être que cela a été introduit dans les versions plus récentes.
x-yuri

1
Et onNClicks: regexsemble au moins plus lisible.
x-yuri

5

xterm a plusieurs paramètres de ressources liés au double et triple-clic pour la sélection (la page de manuel répertorie toutes les ressources pertinentes):

cutNewline(classe CutNewline)
Si « false », triple clic pour sélectionner une ligne ne comprend pas le Newline à la fin de la ligne. Si "vrai", le Newline est sélectionné. La valeur par défaut est "true".

cutToBeginningOfLine (classe CutToBeginningOfLine )
Si "faux", triple-cliquer pour sélectionner une ligne sélectionne uniquement à partir du mot courant vers l'avant. Si "vrai", la ligne entière est sélectionnée. La valeur par défaut est "true".

on2Clicks(classe On2Clicks)
on3Clicks(classe On3Clicks)
Spécifiez le comportement de sélection en réponse à plusieurs clics de souris. Un simple clic de souris est toujours interprété comme décrit dans la section Fonctions de sélection (voir UTILISATION DU POINTEUR ). Plusieurs clics de souris (en utilisant le bouton qui active l'action de sélection-démarrage) sont interprétés en fonction des valeurs de ressource de on2Clicks, etc. La valeur de ressource peut être l'une de celles-ci:

word
Sélectionnez un "mot" tel que déterminé par la ressource charClass . Voir la section CLASSES DE PERSONNAGE .

line
Sélectionnez une ligne (comptage de l'habillage).

group
Sélectionnez un groupe de lignes adjacentes (comptage de l'habillage). La sélection s'arrête sur une ligne vierge et ne s'étend pas en dehors de la page actuelle.

page
Sélectionnez toutes les lignes visibles, c'est-à-dire la page.

all
Sélectionnez toutes les lignes, c'est-à-dire, y compris les lignes enregistrées.

regex
Sélectionnez un "mot" tel que déterminé par l'expression régulière qui suit dans la valeur de la ressource.

none
Aucune action de sélection n'est associée à cette ressource. Xterm l'interprète comme la fin de la liste. Par exemple, vous pouvez l'utiliser pour désactiver les clics triples (et supérieurs) en définissant on3Clicks sur "aucun".

Les valeurs par défaut pour on2Clickset on3Clickssont "mot" et "ligne" , respectivement. Il n'y a pas de valeur par défaut pour on4Clicks ou on5Clicks, ce qui les rend inactifs. Au démarrage, xterm détermine le nombre maximum de clics en fonction des onXClicks valeurs de ressources définies.


Ce que le manuel ne vous dit pas: pour certaines distributions, la valeur par défaut n'est pas la valeur par défaut documentée. La définition d'une ressource charClass vide restaure la valeur par défaut documentée. Tout ce que vous spécifiez pour charClass écrase uniquement les entrées que vous spécifiez; les entrées non spécifiées sont restaurées à la valeur par défaut documentée. Du moins, c'est ainsi que cela semble fonctionner pour moi.
Jeff Learman

J'ai couru dans un poste qui suggèrent les valeurs suivantes: xterm*on2Clicks: regex [^/@ \n]+, xterm*on3Clicks: regex [^ \n]+, xterm*on4Clicks: regex [^#$]+, xterm*on5Clicks: line. Semble mieux et plus facile à comprendre que ceux de la réponse acceptée.
x-yuri

À bien y penser, pour l'instant j'ai décidé de tirer le meilleur parti des deux approches (au moins de la façon dont je le comprends maintenant): 2 clics pour un mot, 3 clics pour un mot (dans vimle sens de xterm*on3Clicks: regex [^ \n]+), 4 clics pour copier les commandes de shell ( à partir de mot en cours à la fin de la ligne, xterm*on4Clicks: line, xterm*cutNewline: false, xterm*cutToBeginningOfLine: false), 5 cliquer pour des lignes entières ( xterm*on5Clicks: regex [^\n]+).
x-yuri
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.