mirror of
https://github.com/atom/atom.git
synced 2026-02-08 21:55:05 -05:00
Vim mode supports command mode and insert mode with i, esc, and x bindings
This commit is contained in:
@@ -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'
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
28
src/atom/vim-mode.coffee
Normal 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()
|
||||
Reference in New Issue
Block a user