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?

Odpowiedzi:


9

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


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”).


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.


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.