Могу ли я указать, какие символы устанавливают границу выделения двойным щелчком в терминале GNOME?

Когда я дважды щелкаю, чтобы выделить текст в GNOME Terminal, выбор останавливается на пробелах, но продолжается через дефисы:

пространства

дефиса

Некоторые из моих имен файлов содержат необычные символы, такие как тяжелая звездочка со слезами и не могут быть выбраны двойным щелчком:

необычные персонажи

Есть ли способ сделать двойной щелчок мышью продолженным и для этих персонажей?

6 ответов

Решение

В "Редактирование> Параметры профиля> Общие" добавьте символ в поле "Выбор символов по слову".

[Добавление ответа, так как принятый больше не работает.]

скрипт

Я собрал это вместе в скрипт, чтобы установить разделители слов:

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

Фон

GNOME Terminal несколько раз переворачивался на эту тему.

Эта функция конфигурации была удалена в gnome-терминал 3.14 (включен в Ubuntu 15.04 Vivid)

Затем в gnome-терминал 3.16 (включен в Ubuntu 15.10 Wily), опция была вновь введена под капот, но без пользовательского интерфейса. Кроме того, толстая кишка : был изменен, чтобы рассматриваться как разделитель слов.

Редактирование с помощью dconf

В соответствии с этими инструкциями вы можете настроить набор с помощью dconf: https://bugs.launchpad.net/ubuntu/+source/gnome-terminal/+bug/1401207/comments/8

Я люблю использовать -#%&+,./:=?@_~ как набор не-слов-разделителей.

Обратите внимание, что использование двоеточий есть / сумасшедший /. Да, там есть.

1) изменить -> настройки профиля -> вкладка "Общие" в вашем профиле имеет идентификатор профиля, например, b1dcc9dd-5262-4d8d-a863-c897e6d979b9

2) проверьте правильность синтаксиса:

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

Если он ничего не возвращает, вы ошибаетесь; Попробуйте снова.

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

В частности, здесь есть ":", что позволяет выбирать URL-адреса так, как я ожидал. ( http://example.com/ не выбирает "//example.com").

Очень полезная функция по умолчанию, реализованная в других терминалах, - это постепенный выбор расширенных участков линии на экране. например, учитывая

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

дважды щелкнув, скажем, filenr в dsr.filenr_34.ctr будет прогрессировать от filenr чтобы:

                              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

Окружающие симметрии могут быть решены путем добавления пар до разделителя следующего уровня.

И, конечно же, пользователю должна быть предоставлена ​​возможность изменения значений по умолчанию.

Другие ответы не работают сегодня... это работает в Ubuntu 18.04 ... сначала идентифицируйте свой UUID идентификатор профиля терминала gnome... введите это в терминал

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

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

Теперь внесите изменения:

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

до тех пор, пока ubuntu 18.04 не будет исправлено, следующая команда чтения молча завершится сбоем, в то время как она нормально работала на ubuntu 16.04

dconf  read  /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/word-char-exceptions

Расширяя ответ @alberge, вы можете выполнить следующее python3 скрипт для изменения всех ваших профилей, чтобы сделать это:

#!/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!")

Или вы можете просто выполнить:

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

В Ubuntu 20.04.5 LTS. Я потерял пару часов, пытаясь заставить его работать. Но причина зависания довольно проста: значение переменной "@ms" обратно интуитивному и обратно тому, что написано в org.gnome.Terminal.gschema.xml.

@ms должен содержать только символы, РАЗРЕШЕННЫЕ для выбора двойным щелчком мыши. Итак, если вы НЕ хотите использовать тире, двоеточия или что-то еще, вы можете ввести:

      UUID=$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d \')
dconf write /org/gnome/terminal/legacy/profiles:/:${UUID}/word-char-exceptions "@ms '_^'"

Смена работает сразу, сохраняется через сброс; но для другого профиля вы должны повторить команду.

Другие вопросы по тегам