diff --git a/rasa-ext-vim.cabal b/rasa-ext-vim.cabal
--- a/rasa-ext-vim.cabal
+++ b/rasa-ext-vim.cabal
@@ -1,5 +1,5 @@
 name: rasa-ext-vim
-version: 0.1.6
+version: 0.1.7
 cabal-version: >=1.10
 build-type: Simple
 license: GPL-3
@@ -22,10 +22,10 @@
         Rasa.Ext.Vim
     build-depends:
         base >=4.8 && <5,
-        rasa >=0.1.10 && <0.2,
-        rasa-ext-files >=0.1.4 && <0.2,
-        rasa-ext-views >=0.1.4 && <0.2,
-        rasa-ext-cursors >=0.1.6 && <0.2,
+        rasa >=0.1.11 && <0.2,
+        rasa-ext-files >=0.1.5 && <0.2,
+        rasa-ext-views >=0.1.5 && <0.2,
+        rasa-ext-cursors >=0.1.7 && <0.2,
         text >=1.2.2.1 && <1.3,
         yi-rope >=0.7.0.2 && <0.8,
         text-lens >=0.1.1 && <0.2,
@@ -41,7 +41,7 @@
     main-is: Spec.hs
     build-depends:
         base >=4.9.0.0 && <4.10,
-        rasa-ext-vim >=0.1.6 && <0.2,
+        rasa-ext-vim >=0.1.7 && <0.2,
         hspec >=2.2.4 && <2.3
     default-language: Haskell2010
     default-extensions: OverloadedStrings
diff --git a/src/Rasa/Ext/Vim.hs b/src/Rasa/Ext/Vim.hs
--- a/src/Rasa/Ext/Vim.hs
+++ b/src/Rasa/Ext/Vim.hs
@@ -11,6 +11,7 @@
 import Control.Monad
 import Control.Lens
 import Data.Default
+import Data.Maybe (fromMaybe)
 import Data.Typeable
 import qualified Yi.Rope as Y
 
@@ -56,7 +57,7 @@
 -- > rasa $ do
 -- >    vim
 -- >    ...
-vim :: Action ()
+vim :: App ()
 vim = do
   void $ onKeypress handleKeypress
   onEveryNewBuffer_ . addBottomStatus $ do
@@ -66,7 +67,7 @@
       Insert -> styleText "INSERT" $ fg Green
 
 -- | The event listener which listens for keypresses and responds appropriately
-handleKeypress :: Keypress -> Action ()
+handleKeypress :: Keypress -> App ()
 handleKeypress keypress = focusDo_ $ do
   mode <- getMode
   preHist <- getHist
@@ -80,9 +81,9 @@
 
 -- | Listeners for keypresses that run regardless of current mode.
 anyMode :: [Keypress] -> BufAction ()
-anyMode [Keypress 'c' [Ctrl]] = liftAction exit
-anyMode [KPageDown []] = liftAction $ scrollBy 14 -- Page down
-anyMode [KPageUp []] = liftAction $ scrollBy (-14) -- Page up
+anyMode [Keypress 'c' [Ctrl]] = liftApp exit
+anyMode [KPageDown []] = liftApp $ scrollBy 14 -- Page down
+anyMode [KPageUp []] = liftApp $ scrollBy (-14) -- Page up
 anyMode [KHome []] = startOfLine
 anyMode [KEnd []] = endOfLine
 anyMode _ = return ()
@@ -110,22 +111,22 @@
 normal [Keypress 's' []] = addHist $ Keypress 's' []
 normal [Keypress 's' [], Keypress 'n' []] = toggleLineNumbers
 
-normal [Keypress '+' []] = liftAction nextBuf
-normal [Keypress '-' []] = liftAction prevBuf
-normal [Keypress 'w' [Ctrl]] = liftAction hSplit
-normal [Keypress 'v' [Ctrl]] = liftAction vSplit
-normal [Keypress 'o' [Ctrl]] = liftAction closeInactive
-normal [Keypress 'r' [Ctrl]] = liftAction rotate
+normal [Keypress '+' []] = liftApp nextBuf
+normal [Keypress '-' []] = liftApp prevBuf
+normal [Keypress 'w' [Ctrl]] = liftApp hSplit
+normal [Keypress 'v' [Ctrl]] = liftApp vSplit
+normal [Keypress 'o' [Ctrl]] = liftApp closeInactive
+normal [Keypress 'r' [Ctrl]] = liftApp rotate
 
-normal [Keypress 'e' [Ctrl]] = liftAction $ scrollBy 1 -- Scroll down
-normal [Keypress 'd' [Ctrl]] = liftAction $ scrollBy 7 -- Half-Page down
-normal [Keypress 'y' [Ctrl]] = liftAction $ scrollBy (-1) -- Scroll up
-normal [Keypress 'u' [Ctrl]] = liftAction $ scrollBy (-7) -- Half-Page up
+normal [Keypress 'e' [Ctrl]] = liftApp $ scrollBy 1 -- Scroll down
+normal [Keypress 'd' [Ctrl]] = liftApp $ scrollBy 7 -- Half-Page down
+normal [Keypress 'y' [Ctrl]] = liftApp $ scrollBy (-1) -- Scroll up
+normal [Keypress 'u' [Ctrl]] = liftApp $ scrollBy (-7) -- Half-Page up
 
-normal [KLeft []] = liftAction focusViewLeft
-normal [KRight []] = liftAction focusViewRight
-normal [KUp []] = liftAction focusViewAbove
-normal [KDown []] = liftAction focusViewBelow
+normal [KLeft []] = liftApp focusViewLeft
+normal [KRight []] = liftApp focusViewRight
+normal [KUp []] = liftApp focusViewAbove
+normal [KDown []] = liftApp focusViewBelow
 
 
 normal [Keypress 'G' []] = do
@@ -178,8 +179,19 @@
 
 -- | Move cursors to end of the line
 endOfLine :: BufAction ()
-endOfLine = findNext "\n"
+endOfLine = do 
+  txt <- getText
+  overRanges . map $ overBoth $ coordEndOfLine txt
+  where
+    coordEndOfLine :: Y.YiString -> Coord -> Coord
+    coordEndOfLine txt (Coord row col) = Coord row maxColumn
+      where
+        maxColumn :: Int
+        maxColumn = fromMaybe col (txt ^? asLines . ix row . to Y.length)
 
 -- | Move cursors to start of the line
 startOfLine :: BufAction ()
-startOfLine = findPrev "\n"
+startOfLine = overRanges . map $ overBoth coordStartOfLine
+  where
+    coordStartOfLine :: Coord -> Coord
+    coordStartOfLine (Coord x _) = Coord x 0
