vt5491
vt5491

Reputation: 2294

How to change command-palette scroll key bindings in atom

I'm a new Atom user and I want to override the Atom command palette (shift-ctrl-p) scrolling key bindings to something more vi friendly like ctrl-n and ctrl-p instead of the annoying arrow keys (which force me to take my hands off the home row).

Just to be clear, I don't want to change the key binding that brings up the command palette, but the key bindings you use to scroll through the list once it's up:

enter image description here

I can only find a binding to override the command palette toggle:

enter image description here

As you can see in the following config file, I was able to override the autocomplete scrolling, and I hope to do the same with the command palette. I've tried 'command-palette:up' ,'command-palette:down' and 'command-palette:move-up' etc. to no avail.

Here's is my keymap.cson.

# Atom Flight Manual:
# https://atom.io/docs/latest/using-atom-basic-customization#cson
#vt add
'body atom-text-editor.autocomplete-active':
  'ctrl-p': 'autocomplete-plus:move-up'
  'ctrl-n': 'autocomplete-plus:move-down'
  'alt-p': 'autocomplete-plus:page-up'
  'alt-n': 'autocomplete-plus:page-down'
  'home': 'autocomplete-plus:move-to-top'
  'end': 'autocomplete-plus:move-to-bottom'
# vim-plus ex mode 2016-04-18
'atom-text-editor.vim-mode-plus.normal-mode':
  ':': 'vim-mode-plus-ex-mode:open'
  '!': 'vim-mode-plus-ex-mode:toggle-setting'
# add cmd palette key bindings --> These do not work.
'body .native-key-bindings':
  'ctrl-p': 'command-palette:up'  
  'ctrl-n': 'command-palette:down'

#vt end

I've been really impressed with the key binding support in Atom thus far. I'd be really surprised if it couldn't handle this but, alas, I think this might be the case.

Does anyone know of a way to do this?

Atom 1.7.2, linux

Upvotes: 2

Views: 738

Answers (2)

Micah Smith
Micah Smith

Reputation: 4463

To target keybindings for just the command palette, you can find an appropriate selector by looking in the command-palette repo keymaps: https://github.com/atom/command-palette/blob/v0.43.5/keymaps/command-palette.cson

This suggests the use of the .command-palette selector, which seems more appropriate then atom-workspace.

'.command-palette':
  'ctrl-n': 'core:move-down'
  'ctrl-p': 'core:move-up'

I was not able to find a mapping to scroll a page at a time within the command palette, though I'm sure someone else can figure it out. The keyboard page up/down keys have no effect so mapping to core:page-down etc. is not going to work.

Upvotes: 0

vt5491
vt5491

Reputation: 2294

I was able to get single line scroll to work, but not page scroll to work with the following in my keymap.cson:

'atom-workspace':
  # these work
  'ctrl-p' : 'core:move-up'
  'ctrl-n' : 'core:move-down'
  # these don't work
  'alt-p' : 'core:page-up'
  'alt-n' : 'core:page-down'

It would be nice to have page scroll as well, but I should be able to narrow down the list down by typing in text, so I don't foresee needing page-up, page-down all that often.

Now I'm happy.

Upvotes: 1

Related Questions