Czy mogę określić, jakie znaki ustawiają granicę wyboru dwukrotnego kliknięcia w terminalu GNOME?

16

Kiedy klikam dwukrotnie, aby zaznaczyć tekst w terminalu GNOME, zaznaczenie zatrzymuje się w spacjach, ale kontynuuje ponad myślnikami:

spacje

Myślniki

Niektóre z moich nazw plików zawierają nietypowe znaki, takie jak ciężka gwiazdka z wypuszczoną łzą i nie można ich wybrać, klikając dwukrotnie:

niezwykłe postacie

Czy istnieje sposób, aby zaznaczanie podwójnym kliknięciem trwało również nad tymi postaciami?

ændrük
źródło

Odpowiedzi:

9

W „Edycji> Preferencje profilu> Ogólne” dodaj znak do pola „Znaki wyboru według słowa”.

mgunes
źródło
Dzięki, nie wiem jak tego nie zauważyłem.
ændrük
Czy ktoś znalazł ogólny sposób na zrobienie tego w całym środowisku GNOME? Czy też granice słów należą do twórców każdej aplikacji w celu zdefiniowania / przedefiniowania? Powiązane pytanie: superuser.com/q/650240/245597 .
Noyo
11
Przynajmniej od wersji 3.14 ta opcja zniknęła. Jak możemy to teraz zrobić?
Joachim Breitner
Próbowałem, dconf write /org/gnome/terminal/legacy/profiles:/:{your-profile-id}/word-char-exceptions '@ms "-,.;/?%&#_=+@~·:"'ale dostaję tylkoerror: Could not connect: Connection refused
2015
Wygląda na to, że nie udało mi się uzyskać nieprzerwanej przestrzeni. Działa jednak z funky gwiazdką na terminalu partnera od Zesty.
Gringo Suave,
16

[Dodanie odpowiedzi, ponieważ zaakceptowana nie działa.]

Scenariusz

Złożyłem to razem w skrypcie, aby ustawić separatory słów:

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

tło

GNOME Terminal klapnął kilka razy na ten temat.

Ta funkcja konfiguracji została usunięta w gnome-terminal 3.14 (zawarty w Ubuntu 15.04 Vivid)

Następnie w gnome-terminal 3.16 (dołączony do Ubuntu 15.10 Wily), opcja została ponownie wprowadzona pod maską, ale bez interfejsu użytkownika. Ponadto :zmieniono dwukropek, aby traktować go jako separator słów.

Edycja za pomocą dconf

Zgodnie z tymi instrukcjami możesz skonfigurować zestaw za pomocą dconf: https://bugs.launchpad.net/ubuntu/+source/gnome-terminal/+bug/1401207/comments/8

Lubię używać -#%&+,./:=?@_~jako zestawu separatorów innych niż słowa.

Zauważ, że użycie dwukropków jest / crazy /. Tak, tam jest: /: tam.

1) edycja -> preferencje profilu -> karta Ogólne w profilu ma swój identyfikator profilu, np. B1dcc9dd-5262-4d8d-a863-c897e6d979b9

2) sprawdź, czy masz poprawną składnię:

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

Jeśli nic nie zwraca, oznacza to, że jest źle; Spróbuj ponownie.

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

W szczególności ma on „:”, co powoduje, że wybiera adresy URL tak, jak się spodziewam. ( http://example.com nie wybiera „//example.com”).

AB
źródło
Dzięki właśnie tego potrzebowałem, aby uzyskać :. Czy to możliwe, że można napisać polecenie (polecenia), aby automatycznie pobrać profil domyślny lub bieżący, więc nie muszę ręcznie wyszukiwać identyfikatora mojego profilu, aby uruchomić to polecenie w przyszłości? W ten sposób mogę po prostu uruchomić ten skrypt na nowych instalacjach.
Programster,
@Programster Możesz zrobić coś takiego zdconf list /org/gnome/terminal/legacy/profiles:/
AB
dzięki @alberge Wziąłem to i umieściłem w skrypcie w języku Python
Programster
Jaka jest domyślna wartość word-char-exceptions, więc mogę dodać tylko jeden znak?
Tor Klingberg,
1

Bardzo przydatną domyślną funkcją zaimplementowaną w innych terminalach jest progresywny wybór rozszerzonych odcinków linii na ekranie. np. dane

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

dwukrotne kliknięcie, powiedzmy, filenrw dsr.filenr_34.ctrspowoduje przejście od 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

Otaczające symetrie można rozwiązać, dodając pary do ogranicznika następnego poziomu.

I oczywiście użytkownik powinien mieć możliwość zmiany ustawień domyślnych.

Marc
źródło
1
Brak komentarza do odpowiedzi, ale spróbuj sformatować ją w lepszy sposób, aby ludzie rozumieli ją szybciej. Jeśli chcesz to zrobić krok po kroku, użyj numeracji.
VedVals,
Dziękuję, ale nie sądzę, że dotyczy to mojego pytania. Pytam konkretnie, jak skonfigurować GNOME Terminal.
ændrük
1

Inne odpowiedzi nie działają dzisiaj ... działa to na Ubuntu 18.04 ... najpierw zidentyfikuj swój identyfikator identyfikatora terminala gnome UUID ... wystaw to w terminalu

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

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

teraz wprowadź zmiany:

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

dopóki Ubuntu 18.04 nie zostanie naprawiony, następująca komenda odczytu po cichu kończy się niepowodzeniem, podczas gdy działała dobrze na Ubuntu 16.04

dconf  read  /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/word-char-exceptions
Scott Stensland
źródło
Wygląda raczej jak askubuntu.com/a/725109/158442
mur
0

Rozszerzając odpowiedź @alberge, możesz wykonać następujący python3skrypt, aby zmienić wszystkie profile, aby to zrobić:

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

Lub możesz po prostu wykonać:

curl -s http://scripts.programster.org/scripts/5?output=raw | python3
Programista
źródło