AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 541661
Accepted
Zhro
Zhro
Asked: 2019-09-14 13:39:33 +0800 CST2019-09-14 13:39:33 +0800 CST 2019-09-14 13:39:33 +0800 CST

“保存更改”模式对话框使用“关闭而不保存”的起源、缺少键盘加速器以及如何与这些对话框交互

  • 772

来自 Windows,我非常习惯于非常常见的“保存更改”模式对话框,它提供“是/否/取消”选项,其中“Y”和“N”被提供为键盘加速器(快捷键)。

在 Linux 上,我经常会尝试关闭未保存的文档,然后通过键入“N”来关闭对话框——但这不起作用。不仅范式不同(“关闭而不保存”与“否”),而且似乎从来没有任何加速器。

我在 Sublime Text 中尝试过:

在此处输入图像描述

梅花:

在此处输入图像描述

编辑:

在此处输入图像描述

LibreOffice 作家:

在此处输入图像描述

这是 Linux 上此类对话的正常范例吗?它的起源是什么?它是 GTK 提供的对话框吗?

对于一个非常普通的对话,我觉得它非常不友好。我必须改为使用选项卡来逐步查看聚焦的按钮。这并不总是很明显,具体取决于使用的主题。

为什么没有加速器?它们在模态对话框中不受支持吗?

我正在尝试让自己熟悉常见的模态范式(至少对于 GTK),这样我就不必考虑它,只需完全从键盘上排队我的操作即可。对于这个样本集,似乎“tab,enter”是关闭和关闭而不保存的方式。


我发现 Sublime Text 在 Windows 上使用预期的“是/否/取消”对话框和在 Linux 上使用“关闭而不保存/取消/保存”对话框(就像那里的其他应用程序一样)很有趣。我怀疑这一定是一个积极的决定。

linux
  • 3 3 个回答
  • 497 Views

3 个回答

  • Voted
  1. Stephen Kitt
    2019-09-14T13:45:16+08:002019-09-14T13:45:16+08:00

    这个对话框确实是由 Gtk 提供的。

    它确实有加速器;默认情况下不会显示它们,但如果您按住Alt它们,您会看到它们。在 Gedit 中,它们w用于“关闭而不保存”、c“取消”和s“另存为...”。您也可以使用Esc取消和Enter保存。

    • 4
  2. Best Answer
    telcoM
    2019-09-16T02:22:26+08:002019-09-16T02:22:26+08:00

    我相信 GTK/GNOME 从 Apple macOS 及其祖先那里借鉴了相当多的人机界面设计指南。

    我认为 Mac 的对话窗口有相当严格的设计规则:

    • Enter将始终是“做默认/安全的事情”的加速器,即保存或另存为......在您的示例中,有点像“普遍肯定”。“保存/另存为”按钮上较粗的边界表明情况确实如此。
    • Esc始终是“停止,我毕竟不想要这个”按钮,在您的示例中调用相当于“取消”的按钮。换句话说,就是“万能负”加速器。
    • ..并且由于“关闭而不保存”是破坏性选项(它会导致数据丢失),因此实际上应该比其他选项更难选择。所以它不会得到任何一个通用加速器。

    您可能想阅读经典的 Macintosh 人机界面指南文档,或至少阅读与对话框相关的部分(反馈和对话框从 PDF 的第 33 页开始,以及关于对话框的整个第 6 章,从第 199 页开始。)虽然GTK 做了一些修改,这个旧文档非常清楚地描述了 UI 设计师可能瞄准的设计理念。

    GNOME 也有自己的人机界面指南。特别是,它明确定义了加速键(在其术语中称为访问键Alt)仅在按住时才显示。

    • 3
  3. user370539
    2019-09-15T01:08:02+08:002019-09-15T01:08:02+08:00

    关于起源,我给出了一些来自经典 unix 编辑器“vi”(和“vim”)的例子。

    在 vim 中,在 "quit" 命令 "q" 之后:

       E37: No write since last change (add ! to override)
    

    这显示在红色 (!) 底线上。现在你必须下定决心q!(真的退出你未命名的“缓冲区” - 还没有文件),或者w my file(写为文件'我的文件'(w! my file覆盖))然后q. 或者只是继续 - 它不是模态的,只是一条消失的线。

    (对于现有文件,它是wq保存到现有文件,然后退出)

    在更经典的“vi”中(1976(!)说维基百科):

    No write since last change (:quit! overrides) 
    

    这里没有说明 q表示退出。你在man ex.

    quit abbr: q
             Causes ex to terminate.  No automatic write of the editor buffer
             to a file is performed.  However, ex issues a warning message [...]
    

    或者在 vim 中,之后h[elp] quit

    :q[uit]      Quit the current window.  Quit Vim if this is the last
                 window.  This fails when changes have been made [...]
    

    并且 Control-C 给出(再次在 vim 上):

    Type  :qa!  and press <Enter> to abandon all changes and exit Vim
    

    如果你第一次读到这个感觉就像是一个格式错误的侮辱:输入“qa”,你这个白痴。它的真正含义是:命令模式的分号,退出所有文件/窗口的 qa 和“!” 强制退出。

    离开编辑从来都不是一件容易的事——甚至不可能。你的例子也证明了这一点。

    我很高兴第一个答案(Alt显示的关键)解决了主要问题。

    “保存(as)(...)”按钮本身也很不一致:sublime 和 libreoffice 似乎直接写入“New”文件或“Untitled 1”文件。Pluma 缺少点!哦,我明白了:它被称为“未保存的文档 1”,所以“另存为”当然意味着“另存为...”而不是“按原样保存”。谁会想要在他的文件夹中出现这样的悖论?

    我想说:你真的不能说“linux”不友好。每个人都在努力在Linux上运行的 GUI 中建立一个有用的桌面环境。

    完全从键盘排队我的动作。

    嗯,听起来好像您可能喜欢在终端中使用 vim ;)

    现在我会看看我是否不能让我的 vim 更友好。它真的不应该出现在红色背景错误线上......

    • 0

相关问题

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve