在Atom中更改“Tree View: Toggle”键位映射?

6

我正在开始自定义Atom编辑器,并尝试更改Tree View:Toggle的键映射时遇到了问题。

我将以下内容放入了我的用户 keycap.cson 文件中:

'.editor': 'ctrl-t': 'Tree View:Toggle'

但它并没有起作用。

查看 首选项->键绑定,我看到它按照我的期望进行了列出:

ctrl-t Tree View:Toggle User .editor

我做错了什么?

更新:

更改为:

'.editor': 'ctrl-t': 'tree-view:toggle'

没有解决问题。

键绑定解析器显示命令已被识别,但它并没有切换树视图。请参见此屏幕截图:

http://cl.ly/image/3A2X1p350v2Q

对此还有其他想法吗?


好的,它开始工作了。我不知道为什么。也许编辑器需要重新启动? - Bob Rockefeller
如果有疑问,您可以随时按 ctrl-alt-cmd-l 重新加载编辑器,但是当涉及到键绑定时,它们应该在更改 keymap.cson 文件后自动更新。 - jbranchaud
我认为这个问题现在已经在Atom中得到了解决。在Ubuntu下,2017年的版本可以正常工作。 - Adam
3个回答

7
我也遇到了同样的问题!这真是令人头痛,因为我需要使用自己的快捷键,但是Atom的按键绑定与我的拉丁字母-QWERTY键盘不同。所以,在试用Atom并寻找一些好的信息时,我想到了这个解决方案:
问题:
当我在Windows中键入时,Atom的按键绑定是。
或者如果我想要<@>,我需要键入,但Atom的按键绑定会执行。
解决方案:
1.进入“设置->按键绑定”。一旦你到达那里,在搜索栏中找到要更改的按键绑定。例如,如果我想更改,那么我就键入,它会过滤出所有具有该字母的按键绑定。
2.然后,要修改它,请单击位于列旁边的复制和粘贴小图标的按键绑定(它将复制您需要的代码行,以便您可以修改它)。
3.一旦你拷贝了按键绑定,请转到“文件->打开您的按键映射”并打开一个带有keymap.cson文件的选项卡。将光标放在末尾,并在那里粘贴您在步骤#2中复制的行。它应该显示类似于这样的内容:
'.platform-win32 .editor, .platform-linux .editor':
  'ctrl-alt-q': 'autoflow:reflow-selection'

4._ 现在您可以更改Atom的行为。我会删除'autoflow:reflow-selection'并写入'unset!',以便显示@符号。

'.platform-win32 .editor, .platform-linux .editor':
  'ctrl-alt-q': 'unset!'

现在当我在Atom编辑器中输入Ctrl-Alt-q时,它会显示at符号,终于!如果你想让它做其他事情,而不是写'unset!',你只需要放置任何你想要它做的事情。

注意:如果你想知道Atom的按键绑定,以便你可以更改其中一些,使用按键绑定解析器,转到Packages->Keybinding Resolver->Toggle

这里我发布了我在keymap.cson中所做的更改,以便使用我的拉丁字母键盘与Atom编辑器一起使用。

'atom-workspace atom-text-editor:not([mini])':
  "ctrl-alt-[": "unset!",
  "ctrl-alt-]": "unset!",
  'ctrl-/': 'unset!'
  'ctrl-7': 'editor:toggle-line-comments'
  'ctrl-alt-8': 'tree-view:recursive-collapse-directory'
  'ctrl-alt-8': 'editor:fold-current-row'
  'ctrl-alt-9': 'editor:unfold-current-row'
'.platform-win32 .editor, .platform-linux .editor':
  'ctrl-alt-q': 'unset!'
'.platform-win32 .find-and-replace, .platform-linux .find-and-replace':
  'ctrl-alt-/': 'unset!'
  'ctrl-alt-7': 'find-and-replace:toggle-regex-option'
'.platform-win32 .project-find, .platform-linux .project-find':
  'ctrl-alt-/': 'unset!'
  'ctrl-alt-7': 'project-find:toggle-regex-option'

干杯!


4
这很容易解决。你没有正确格式化命令的名称。它应该像下面这样:

这很容易解决。您没有正确格式化命令的名称。它应如下所示:

'.editor':
  'ctrl-t': 'tree-view:toggle'

在未来,如果出现意外问题,请尝试查看已知工作的现有开源软件包,看看是否存在不匹配的情况。例如,您可以访问 tree-view 的键映射文件tree-view.cson,以查看其格式化方式。
进一步的改善 您可能会注意到,因为您定义的按键绑定与编辑器相关联,所以如果您将 Tree View 置于焦点,您的按键绑定将不会触发。再次查看上面的文件,您将看到一种改进方法。将按键绑定绑定到平台 .platform-darwin(或适用于您的其他平台),这样无论编辑器的哪个元素处于焦点,均可触发它。
'.platform-darwin':
  'ctrl-t': 'tree-view:toggle'

当编辑器处于焦点状态时,现有的editor:transpose键绑定将优先使用,因为它具有更具体的CSS类(即.editor)。因此,当编辑器处于焦点状态时,Tree View不会被切换。最简单的解决方法是也添加编辑器的键绑定:
'.platform-darwin':
  'ctrl-t': 'tree-view:toggle'

'.editor':
  'ctrl-t': 'tree-view:toggle'

现在无论是编辑器还是树形视图都不再重要,切换仍然会被触发。
最后的建议 当调整按键绑定时,另一个建议是使用按键绑定解析器。您可以使用cmd-.打开它。如果您这样做并尝试按ctrl-t,您会注意到您添加的按键绑定显示出来(用绿色突出显示)。您还会注意到,您的按键绑定正在抑制另一个按键绑定,即editor:transpose。考虑使用其他按键绑定。
Atom之美在于其可定制性,只需确保您知道自定义的权衡。

感谢详细的评论。但是如果那不起作用,我会很困惑的。我已经在原来的问题中添加了更多信息。 - Bob Rockefeller
你确定在按下快捷键时编辑器处于焦点状态吗?尝试将“.editor”更改为更常见的平台范围之一(例如“.platform-darwin”)。 - jbranchaud
@BobRockefeller 有时候你需要重新启动Atom,才能使自定义更改生效(在2014-05-20仍然适用)。 - JorgeArtware

2

嗯,我在使用ATOM时也遇到了同样的问题,几乎放弃了!我在Windows 8电脑上使用ATOM。

  1. 如果您修改了keymap.cson,请重新启动编辑器。
  2. 如果您更改了任何键绑定的值,请为您更改的函数创建一个新的键绑定。例如:

我遇到了@符号的问题,并通过以下代码解决:

使用Packages>KeyBinding resolver工具,我得到:

ctrl-alt-q是我的@键序列

使用KeyBinding工具,我得到: ctrl-alt-q执行autoflow:reflow-selection命令

'.platform-win32 atom-text-editor, .platform-linux atom-text-editor': 'ctrl-alt-q': 'unset!', 'ctrl-alt-7': 'autoflow:reflow-selection'

首先我取消了我的键绑定,然后为我想要覆盖的命令发明了一个新的键绑定。

希望这对您有用


"重启"是关键。 - aks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接