anchor.diff:              | NormalMode, [ "C" ] -> [ run Delete EndOfLine; run (SwitchMode InsertMode) Nothing ]
               | NormalMode, [ "D" ] -> [ run Delete EndOfLine ]
               | NormalMode, [ "x" ] -> [ run Delete CurrentLocation ]
  +            | NormalMode, [ "p" ] -> [ run (Put After) Nothing ]
  +            | NormalMode, [ "P" ] -> [ run (Put Before) Nothing ]
               | NormalMode, [ Action action; FindChar m; c ] -> [ run action (m c) ]
               | NormalMode, [ Action action; "i"; BlockDelimiter c ] -> [ run action (InnerBlock c) ]
               | NormalMode, [ Action action; "a"; BlockDelimiter c ] -> [ run action (ABlock c) ]
  
positive.code:             | 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 ]
              | _         , _ :: _ :: _ :: _ :: t -> [ run ResetKeys Nothing ]
              | _ -> []
          multiplier, action, newState
  
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
  