Vim mode supports command mode and insert mode with i, esc, and x bindings

This commit is contained in:
Corey Johnson & Nathan Sobo
2012-01-11 15:00:40 -08:00
parent 17ad7a26e7
commit 8471270add
5 changed files with 94 additions and 0 deletions

View File

@@ -55,3 +55,14 @@ class Editor extends Template
@buffer.url = url
@buffer.save()
setCursor: ({column, row}) ->
@aceEditor.moveCursorToPosition({column, row})
getCursor: ->
@getAceSession().getSelection().getCursor()
delete: ->
@aceEditor.remove 'right'

View File

@@ -8,6 +8,7 @@ Editor = require 'editor'
FileFinder = require 'file-finder'
Project = require 'project'
GlobalKeymap = require 'global-keymap'
VimMode = require 'vim-mode'
module.exports =
class RootView extends Template
@@ -22,6 +23,7 @@ class RootView extends Template
globalKeymap: null
initialize: ({url}) ->
new VimMode(@editor)
@editor.keyEventHandler = atom.globalKeymap
@createProject(url)

28
src/atom/vim-mode.coffee Normal file
View File

@@ -0,0 +1,28 @@
module.exports =
class VimMode
editor: null
constructor: (@editor) ->
atom.bindKeys '.command-mode'
'i': 'insert-mode:activate'
'x': 'command-mode:delete'
atom.bindKeys '.insert-mode'
'<esc>': 'command-mode:activate'
@editor.addClass('command-mode')
@editor.on 'insert-mode:activate', => @activateInsertMode()
@editor.on 'command-mode:activate', => @activateCommandMode()
@editor.on 'command-mode:delete', => @delete()
activateInsertMode: ->
@editor.removeClass('command-mode')
@editor.addClass('insert-mode')
activateCommandMode: ->
@editor.removeClass('insert-mode')
@editor.addClass('command-mode')
delete: ->
@editor.delete()