gtk-key-theme Emacs:什么是全选键?


22

我更喜欢emacs击键,但是全选似乎不是emacs词汇表的一部分,或者至少不是emacs的gtk-key-theme。Mw无法复制所选区域。

  1. 全选的按键是什么?
  2. 这个主题的按键绑定图在哪里?

谢谢,史蒂夫

Answers:


22

这里一个简单的“全选”,在GTK绑定:C-/

它被定义为一般的GtkTextView信号,而不是emacs关键主题的一部分。但它可以正常工作。定义为的替代方法C-a。尽管后者由emacs主题重新解释,但C-/对于“全选”仍然有效。


好答案。为什么还没有任何投票?
2015年

7

没有一个直接执行此操作的捷径。

您可以使用Ctrl- 转到文本结尾,e然后删除Ctrl- 行u。但是GtkEntry,这仅适用于,即单行输入字段。

如果您需要在GtkTextView类似于多行编辑器的控件中选择所有内容,则只需执行繁琐的操作Ctrl- Home再加上Ctrl+ Shift-即可End,而使用我的63键键盘几乎是不可能的。

如果出于良好的编辑效率或移动设备键盘的限制原因,Home并且End超出了此范围,那么您将不得不克服。选择“全选”,从“编辑”菜单中是一个坏主意,因为它映射到Alt- e- a在Firefox中, Alt- e- t在gedit中,Alt- e- s在OpenOffice的(即使是GNOME集成),在每个软件不同的密钥,并且在某些软件中,“编辑菜单”中没有“全选”功能,例如铬。在某些软件中,甚至没有“编辑菜单”本身,甚至没有隐藏的菜单可以用Alt-e,就像鹦鹉螺一样。这种不一致超出了Alt激活菜单栏的目的,并且没有任何操作系统(甚至Windows)如此不稳定。甚至右键单击菜单也没有“全选”的固定快捷方式-通常是这样,a但是可以在t应用程序之间使用。只能使用像GNOME这样的元项目来在每个单独的软件中进行错误修复,但是知道GNOME本身会产生一些这样的问题(删除“ nautilus”中的“编辑菜单”是GNOME 3的决定)确实没有离开你很有希望。

附带说明一下,Ctrl- Home是移至所有文本开头的唯一捷径,即使它可能会打断您键入小键盘移动设备的工作。

答案到此结束。对于好奇的人,我还有其他信息:


作为一名经验丰富的Emacs用户将尝试Ctrl- - xh正宗emacs的确实,但没有控制键序列是由gtk3的emacs模式的理解。实际上,仅定义了少数emacs快捷方式-偷窥/usr/share/themes/Emacs/gtk-3.0/gtk-keys.css;标签上有足够的空间来记下所有受支持的emacs快捷方式。

使情况变得更糟的是,为此目的很难重新定位快捷键。如您所知,Ctrl- a被emacs占用。但即使Hispanophones,最大的非英语组(中国排除在外,因为我们使用的象形文字),谁是用来选择的一切Ctrl- e,会发现Emacs可以采取的键盘快捷键,太。不包括e,QWERTY键盘的左半部分中没有任何其他键,其目的已经为人们所接受。单独按下时,Google Translate将SHIFT键作为“全选”,但其他软件或其他Google产品均不遵循该设置。

要清空一行,请使用Ctrl- u。这样的好处是不会覆盖X SELECTION(使用鼠标中键拉动的X SELECTION)。这仅是gtk3的emacs模式的独特设置:在实际的emacs中,它本身不会做任何事情;在readline(bash,mysql等)中,应该删除从光标到该行开头的所有内容,而它的对应部分Ctrl- k删除从光标到该行结尾的所有内容。

有些人可能建议您在某个地方留下一个标记,以便使用键盘随机选择。您可能还会发现Ctrl - SPACE在emacs模式下配置为在文本中设置锚点。尽管与许多其他软件(特别是表意符号输入法,以及某些其他编辑器软件中的自动完成)相冲突,但没有任何快捷键可用于使用您设置的锚点。


Ubuntu并没有正式禁止emacs编辑模式,也没有任何其他用UI无法完成的UI配置。有关此类需求的错误报告被标记为优先级低。因此,我认为最好向Linux通用场所(例如超级用户)提出这样的问题。


2

emacs绑定在/usr/share/themes/Emacs/gtk-2.0-key/gtkrc中指定。您也可以在〜/ .config / gtk-3.0 / gtk.css中添加绑定。

全选将是这样的:

bind "<ctrl>h" { "move-cursor" (buffer-ends, -1, 0)
                 "move-cursor" (buffer-ends,  1, 1) };

但是,我还没有找到将其绑定到Cx h的方法。


2

查看现有的按键绑定

对于GTK3应用程序,您可以在本地/usr/share/themes/Emacs/gtk-3.0/gtk-keys.css或可能在GitHub上的GTK git存储库上查看Emacs GTK键主题的绑定(可能在本地)(它不一定等于您的本地文件,因为您的发行版可能已对其进行了修改) 。

在读取此文件时,您必须了解小部件的含义

(查看每个链接站点顶部的图像。)

添加按键绑定以选择全部

select-allGtkTreeViewGtkTextView

对于GtkTreeViewGtkTextView小部件,有一个信号称为select-all。您需要将参数传递给它,1以便它选择全部而不是取消选择。

因此,编辑~/.config/gtk-3.0/gtk.css并添加如下内容:

@binding-set my-text-and-tree-view-bindings
{
    bind "<alt>a"
    {
    "select-all" (1)
    };
}

textview {
  -gtk-key-bindings: my-text-and-tree-view-bindings;
}

treeview {
  -gtk-key-bindings: my-text-and-tree-view-bindings;
}

GtkEntry

因为GtkEntry没有select-all信号。相反,您可以使用两个move-cursor信号序列标记文本。

再次,编辑~/.config/gtk-3.0/gtk.css并添加如下内容:

@binding-set my-entry-bindings
{
    bind "<alt>a"
    {
    "move-cursor" (paragraph-ends, -1, 0)
    "move-cursor" (paragraph-ends,  1, 1)
    };
}

entry {
  -gtk-key-bindings: my-entry-bindings;
}

火狐浏览器

顺便说一句,在Firefox中Alt- a默认情况下无需配置即可为我全选(使用Emacs GTK键主题)。


1

如果要选择一个区域中的所有文本,我更愿意为此定义一个简单的宏。按F3键开始编写宏。然后输入

Esc - <          // goes to beginning of document
Ctrl - spacebar  // set mark
Esc - >          // selects all till end of document

然后使用M -w进行复制(这是我通常从远程UNIX系统复制到本地Windows的操作),然后按F4键完成对宏的定义。

现在您已经完成了定义宏的操作,只需多次按F4键即可重复执行该操作。


GTK Emacs的关键主题与Emacs本身不同。答案中的键绑定几乎都不在那里(而且,如果您实际上是Emacs本身,则可以使用Cx h代替宏。)
Rörd2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.