在 Atom 编辑器中:如何在使用箭头键在树中导航时保持在侧边栏焦点内

In Atom Editor: How to remain inside sidebar focus while navigating through tree using arrowskeys

我可以使用 ctrl-\ (Linux/Windows) 打开 TreeView 并获得焦点。此时我可以使用键盘上的箭头键四处导航,但只有按下 enter 键并失去焦点,我才能看到所选的文件。

有没有办法保持专注于 TreeView 并启用箭头键导航,并且在导航每个新文件时,编辑器将自动切换到该选项卡或打开一个新选项卡并打开该文件?

功能与 synced-sidebar Package 类似,只是方向相反,即,您将使用箭头键导航 TreeView,而选项卡视图将发生变化。

您可以将以下代码添加到您的 init.coffee 文件中:

atom.commands.add '.tree-view', 'tree-view:preview', ->
    for panel in atom.workspace.getLeftPanels()
        if panel.item.constructor.name == "TreeView"
            entry = panel.item.selectedEntry()
            if entry.classList[0] == "directory"
              entry.toggleExpansion()
              return
            else
              atom.workspace.open(entry.getPath(), pending: true, activatePane: false)
              return

之后,您可以通过向 keymap.cson 文件添加新的键盘映射来设置要执行的代码,如下所示:

'.tree-view':
  'right': 'tree-view:preview'

使用向右箭头将在树视图中打开文件和目录,而无需将焦点移至编辑器。我建议您在准备好编辑文件后使用 enter 键切换焦点。

用于切换打开和关闭侧边栏树视图 CTRL+\.

用于在边栏和编辑器页面周围移动焦点 ALT+\.

在 Atom 上测试 GNU/Linux。

如果我的回答与您的问题无关,我深表歉意。

不幸的是, 似乎不起作用;它在按下右箭头时调用,但似乎没有执行任何操作。

对于最终在这里寻找解决方案的其他人,ThomasChef a long-opened github issue with a working answer

将此放入您的 init.coffee:(注意空格...)

atom.commands.add '.tree-view', 'custom:expand-item-down': ->
  fs = require 'fs'
  item = atom.workspace.getActivePaneItem()
  atom.commands.dispatch(item.element, 'core:move-down')
  if fs.lstatSync(item.selectedPath).isDirectory()
    return
  else
    item.openSelectedEntry(pending: true, activatePane: false)
    return
atom.commands.add '.tree-view', 'custom:expand-item-up': ->
  fs = require 'fs'
  item = atom.workspace.getActivePaneItem()
  atom.commands.dispatch(item.element, 'core:move-up')
  if fs.lstatSync(item.selectedPath).isDirectory()
    return
  else
    item.openSelectedEntry(pending: true, activatePane: false)
    return

并将其放入您的 keymap.cson:

'.tree-view':
  'down': 'custom:expand-item-down',
  'up': 'custom:expand-item-up'