¿Puedo especificar qué caracteres establecen el límite de selección de doble clic en el Terminal GNOME?

16

Cuando hago doble clic para seleccionar texto en el Terminal GNOME, la selección se detiene en espacios pero continúa con guiones:

espacios

guiones

Algunos de mis nombres de archivo contienen caracteres poco comunes, como el asterisco pesado con forma de lágrima y no se pueden seleccionar haciendo doble clic:

personajes inusuales

¿Hay alguna manera de hacer que la selección de doble clic continúe también sobre estos personajes?

ændrük
fuente

Respuestas:

9

En "Editar> Preferencias de perfil> General", agregue el carácter al cuadro "Seleccionar caracteres por palabra".

mgunes
fuente
Gracias, no sé cómo no me di cuenta de eso.
ændrük
¿Alguien ha encontrado una forma general de hacer esto en todo GNOME? ¿O los límites de las palabras dependen de los desarrolladores de cada aplicación para definir / redefinir? Pregunta relacionada: superuser.com/q/650240/245597 .
Noyo
11
Al menos desde la versión 3.14, esta opción ha desaparecido. ¿Cómo podemos hacerlo ahora?
Joachim Breitner
He intentado dconf write /org/gnome/terminal/legacy/profiles:/:{your-profile-id}/word-char-exceptions '@ms "-,.;/?%&#_=+@~·:"'pero todo lo que se obtiene eserror: Could not connect: Connection refused
CPRN
Parece que no puede hacer que el espacio sin interrupciones funcione. Sin embargo, funciona con el asterisco funky en el terminal mate de Zesty.
Gringo Suave
16

[Agregar una respuesta ya que la aceptada ya no funciona.]

Guión

Puse esto junto en un script para establecer los separadores de palabras:

https://github.com/ab/ubuntu-wart-removal/blob/master/gnome-terminal-word-separators.sh

Antecedentes

El terminal de GNOME ha cambiado varias veces sobre este tema.

Esta característica de configuración se eliminó en gnome-terminal 3.14 (incluido en Ubuntu 15.04 Vivid)

Luego, en gnome-terminal 3.16 (incluido en Ubuntu 15.10 Wily), la opción se reintrodujo bajo el capó, pero sin interfaz de usuario. Además, :se cambió el colon para ser tratado como un separador de palabras.

Edición con dconf

Según estas instrucciones, puede configurar el conjunto usando dconf: https://bugs.launchpad.net/ubuntu/+source/gnome-terminal/+bug/1401207/comments/8

Me gusta usarlo -#%&+,./:=?@_~como el conjunto de separadores que no son palabras.

Tenga en cuenta que el uso de dos puntos allí es / crazy /. Sí, hay: /: allí.

1) editar -> preferencias de perfil -> la pestaña General de su perfil tiene su ID de perfil, por ejemplo, b1dcc9dd-5262-4d8d-a863-c897e6d979b9

2) compruebe que tiene la sintaxis correcta con:

PS dconf list /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ foreground-color visible-name palette use-system-font ...

Si no devuelve nada, lo has entendido mal; Inténtalo de nuevo.

3) dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/word-char-exceptions '@ms "-#%&+,./:=?@_~"'

Específicamente, esto tiene ":" en, lo que hace que seleccione URL como espero. ( http://example.com no selecciona "//example.com").

AB
fuente
Gracias, esto es exactamente lo que necesitaba para obtener :. ¿Es posible que pueda escribir los comandos para recuperar automáticamente el perfil predeterminado o actual para que no tenga que buscar manualmente mi ID de perfil para ejecutar ese comando en el futuro? De esa manera, puedo ejecutar ese script en nuevas instalaciones.
Programador
@Programster Podrías hacer algo como estodconf list /org/gnome/terminal/legacy/profiles:/
AB
gracias @alberge Tomé eso y lo puse en un script de python
Programster
¿Cuál es el valor predeterminado de word-char-exceptions, por lo que puedo agregar un solo carácter?
Tor Klingberg
1

Una característica predeterminada muy útil implementada en otros terminales es la selección progresiva de secciones extendidas de una línea en la pantalla. por ejemplo, dado

/home/username/dir1_r.2-3/dsr.filenr_34.ctr 23456677 dftrprpr

haciendo doble clic en, digamos, filenren dsr.filenr_34.ctravanzaría de filenra:

                              filenr_34
                          dsr.filenr_34.ctr
                       -3/dsr.filenr_34.ctr
                      2-3/dsr.filenr_34.ctr
                    r.2-3/dsr.filenr_34.ctr
               dir1_r.2-3/dsr.filenr_34.ctr
      username/dir1_r.2-3/dsr.filenr_34.ctr
 home/username/dir1_r.2-3/dsr.filenr_34.ctr
 home/username/dir1_r.2-3/dsr.filenr_34.ctr 23456677
 home/username/dir1_r.2-3/dsr.filenr_34.ctr 23456677 dftrprpr
/home/username/dir1_r.2-3/dsr.filenr_34.ctr 23456677 dftrprpr

Las simetrías circundantes se pueden resolver agregando pares hasta el delimitador del siguiente nivel.

Y, por supuesto, el usuario debe tener la opción de cambiar los valores predeterminados.

bagazo
fuente
1
No haga comentarios sobre la respuesta, pero intente formatearla de una mejor manera para que la gente la entienda más rápido. Si desea enumerarlo paso a paso, use la numeración.
VedVals
Gracias, pero no creo que esto se aplique a mi pregunta. Estoy preguntando específicamente cómo configurar el Terminal GNOME.
ændrük
1

Otras respuestas no funcionan hoy ... esto funciona en ubuntu 18.04 ... primero identifique su ID de perfil de terminal de gnomo UUID ... publique esto en la terminal

profile=$(gsettings get org.gnome.Terminal.ProfilesList default)

echo $profile  #  for me it gives b1dcc9dd-5262-4d8d-a863-c897e6d97969

ahora haz el cambio:

dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d97969/word-char-exceptions '@ms "-,.;?%&#_+@~·$/"'

hasta que ubuntu 18.04 se arregla, el siguiente comando de lectura falla silenciosamente, mientras que funcionó bien en ubuntu 16.04

dconf  read  /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/word-char-exceptions
Scott Stensland
fuente
Parece bastante como askubuntu.com/a/725109/158442
muru
0

Extendiendo la respuesta @alberge, puede ejecutar el siguiente python3script para cambiar todos sus perfiles para hacer esto:

#!/usr/bin/python3

import subprocess

command = ["dconf", "list", "/org/gnome/terminal/legacy/profiles:/"]
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)

profiles = result.stdout.split('\n')

for profileString in profiles:
    if profileString.startswith(":"):
        changeCmdPart = "/org/gnome/terminal/legacy/profiles:/" + profileString + "word-char-exceptions"
        changeCmd = ["dconf", "write", changeCmdPart, '@ms "-#%&+,./:=?@_~"']
        subprocess.run(changeCmd)

print("done!")

O simplemente puede ejecutar:

curl -s http://scripts.programster.org/scripts/5?output=raw | python3
Programador
fuente