anchor.diff:              | VisualModes, [ "x" ] -> [ run Delete Selection; run (SwitchMode NormalMode) Nothing ]
               | VisualModes, [ "d" ] -> [ run Delete Selection; run (SwitchMode NormalMode) Nothing ]
               | VisualModes, [ "c" ] -> [ run Delete Selection; run (SwitchMode InsertMode) Nothing ]
  +            | VisualModes, [ "y" ] -> [ run Yank Selection; run (SwitchMode NormalMode) Nothing ]
               | _         , _ :: _ :: _ :: _ :: t -> [ run ResetKeys Nothing ]
               | _ -> []
           multiplier, action, newState
  
positive.code: open Mono.TextEditor
  open MonoDevelop.Core
  
  type VimMode =
      | NormalMode
      | VisualMode
  
negative.code:                 editor.SetSelection(start, finish)
                  ClipboardActions.Copy editor
                  editor.ClearSelection()
              | Put Before ->
                  let clipboard = ClipboardActions.GetClipboardContent()
                  if clipboard.EndsWith("\n") then
                      editor.Caret.Offset <- editor.GetLine(editor.Caret.Line).Offset
                      ClipboardActions.Paste editor
                      CaretMoveActions.Up editor
                  else
                      ClipboardActions.Paste editor
              | Put After ->
                  let clipboard = ClipboardActions.GetClipboardContent()
                  if clipboard.EndsWith("\n") then
                      editor.Caret.Offset <- editor.GetLine(editor.Caret.Line).EndOffset+1
                      ClipboardActions.Paste editor
                      CaretMoveActions.Up editor
                  else
                      editor.Caret.Offset <- editor.Caret.Offset + 1
                      ClipboardActions.Paste editor
                      editor.Caret.Offset <- editor.Caret.Offset - 1
              | Visual -> editor.SetSelection(start, finish)
              | Undo -> MiscActions.Undo editor
              | InsertLineBelow -> MiscActions.InsertNewLineAtEnd editor
  