diff --git a/spec/atom/vim-mode-spec.coffee b/spec/atom/vim-mode-spec.coffee index c6c581410..5026ebd1a 100644 --- a/spec/atom/vim-mode-spec.coffee +++ b/spec/atom/vim-mode-spec.coffee @@ -39,6 +39,16 @@ describe "VimMode", -> expect(editor.buffer.getText()).toBe '1345' expect(editor.getCursor()).toEqual(column: 1, row: 0) + describe "the h/j/k/l keybindings", -> + it "move the cursor left/up/down/right", -> + editor.buffer.setText("12345\nabcde\nABCDE") + editor.setCursor(column: 1, row: 1) + + editor.trigger keydownEvent('h') + expect(editor.getCursor()).toEqual(column: 0, row: 1) + editor.trigger keydownEvent('h') + expect(editor.getCursor()).toEqual(column: 0, row: 1) + describe "numeric prefix binding", -> it "repeats the following operation N times", -> editor.buffer.setText("12345") diff --git a/src/atom/vim-mode-operators.coffee b/src/atom/vim-mode-operators.coffee index 289819395..9f269fcba 100644 --- a/src/atom/vim-mode-operators.coffee +++ b/src/atom/vim-mode-operators.coffee @@ -23,3 +23,9 @@ module.exports = isComplete: -> true + MoveLeft: class + execute: (editor) -> + {column, row} = editor.getCursor() + editor.navigateLeft() if column > 0 + + isComplete: -> true diff --git a/src/atom/vim-mode.coffee b/src/atom/vim-mode.coffee index c2b38ddab..283d00c08 100644 --- a/src/atom/vim-mode.coffee +++ b/src/atom/vim-mode.coffee @@ -1,6 +1,6 @@ _ = require 'underscore' $ = require 'jquery' -{ NumericPrefix, DeleteChar } = require 'vim-mode-operators' +{ NumericPrefix, DeleteChar, MoveLeft } = require 'vim-mode-operators' module.exports = class VimMode @@ -19,6 +19,7 @@ class VimMode @editor.on 'command-mode:activate', => @activateCommandMode() @editor.on 'command-mode:delete-char', => @deleteChar() @editor.on 'command-mode:numeric-prefix', (e) => @numericPrefix(e) + @editor.on 'command-mode:move-left', => @pushOperator(new MoveLeft) activateInsertMode: -> @editor.removeClass('command-mode') @@ -38,6 +39,7 @@ class VimMode bindings = 'i': 'insert-mode:activate' 'x': 'command-mode:delete-char' + 'h': 'command-mode:move-left' for i in [0..9] bindings[i] = 'command-mode:numeric-prefix' bindings