anchor.diff:      | Nothing
       | HalfPageUp
       | HalfPageDown
  +    | CurrentLocation
   
   type VimAction = {
       repeat: int
  
positive.code:     let parseKeys (state:VimState) =
          let keyList = state.keys// |> Seq.toList
          let multiplier, keyList =
              match keyList with // 2dw or d2w
              | c :: OneToNine d1 :: Digit d2 :: Digit d3 :: Digit d4 :: t -> Some(d1 * 1000 + d2 * 100 + d3 * 10 + d4), c::t
              | c :: OneToNine d1 :: Digit d2 :: Digit d3 :: t -> Some (d1 * 100 + d2 * 10 + d3), c::t
              | c :: OneToNine d1 :: Digit d2 :: t -> Some (d1 * 10 + d2), c::t
              | c :: OneToNine d :: t -> Some d, c::t
  
              | OneToNine d1 :: Digit d2 :: Digit d3 :: Digit d4 :: t -> Some(d1 * 1000 + d2 * 100 + d3 * 10 + d4), t
              | OneToNine d1 :: Digit d2 :: Digit d3 :: t -> Some (d1 * 100 + d2 * 10 + d3), t
              | OneToNine d1 :: Digit d2 :: t -> Some (d1 * 10 + d2), t
  
negative.code:             let visibleLineCount = getVisibleLineCount editor
              let halfwayDown = Math.Min(editor.Document.LineCount, editor.Caret.Line + visibleLineCount / 2)
              editor.Caret.Offset, editor.GetLine(halfwayDown).Offset
          | CurrentLocation -> editor.Caret.Offset, editor.Caret.Offset+1
          | _ -> 0,0
  
  type XSVim() =
  