我可以指定在 GNOME 终端中设置双击选择边界的字符吗?

我可以指定在 GNOME 终端中设置双击选择边界的字符吗?

当我在 GNOME 终端中双击选择文本时,选择在空格处停止,但继续选择连字符:

空格

连字符

我的一些文件名包含不常见的字符,例如泪滴状星号并且不能通过双击选择:

不寻常的人物

有没有办法让双击选择这些字符继续?

答案1

[由于接受的答案不再有效,因此添加答案。]

脚本

我将其放在一起编写一个脚本来设置单词分隔符:

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

背景

GNOME 终端在这个问题上已经多次改变主意。

此配置功能已在 gnome-terminal 3.14 中删除(包含在 Ubuntu 15.04 Vivid 中)

然后在 gnome-terminal 3.16(包含在 Ubuntu 15.10 Wily 中)中,该选项在后台重新引入,但没有 UI。此外,冒号:被改为被视为单词分隔符。

使用 dconf 编辑

根据这些说明,您可以使用 dconf 配置该集合:https://bugs.launchpad.net/ubuntu/+source/gnome-terminal/+bug/1401207/comments/8

我喜欢使用-#%&+,./:=?@_~非单词分隔符集。

请注意,那里的冒号是 /crazy/。是的,那里有 :/:。

1) 编辑 -> 个人资料偏好设置 -> 个人资料上的“常规”选项卡有其个人资料 ID,例如 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”)。

答案2

在“编辑 > 个人资料首选项 > 常规”中,将字符添加到“按单词选择字符”框中。

答案3

其他答案今天不起作用...这在 ubuntu 18.04 上有效...首先识别你的 UUID gnome 终端配置文件 id...在终端中发出此

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

答案4

扩展@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

相关内容