 (defun emc-setup-key-maps ()
   "Sets up all key bindings for working with multiple cursors."
   (interactive)
+
   (define-key evil-visual-state-local-map (kbd "C-n") 'emc-make-next-cursor)
   (define-key evil-normal-state-local-map (kbd "C-n") 'emc-make-next-cursor)
+
+  (define-key evil-visual-state-local-map (kbd "C-t") 'emc-skip-next-cursor)
+  (define-key evil-normal-state-local-map (kbd "C-t") 'emc-skip-next-cursor)
+
+  (define-key evil-visual-state-local-map (kbd "C-p") 'emc-undo-prev-cursor)
+  (define-key evil-normal-state-local-map (kbd "C-p") 'emc-undo-prev-cursor)
+
   (define-key evil-normal-state-local-map (kbd "C-,") 'emc-remove-all-cursors))
 
 (emc-setup-key-maps)

  "Go to next pattern given by `emc-get-pattern'."
  (interactive)
  (when (emc-get-pattern)
    (emc-go-to-next-match (emc-get-pattern))))

(defun emc-maybe-goto-next-match ()
  "Create a cursor at point and go to next match if any."
  (let ((cursor (emc-make-cursor-at-point)))
    (evil-exit-visual-state)

(defun emc-remove-overlay-at-point ()
  "Remove the overlay at point."
  (interactive)
  (when emc-cursor-list
    (setq emc-cursor-list (remove-if (lambda (overlay) (eq (overlay-start overlay) (point)))
                                     emc-cursor-list)))
  (remove-overlays (point) (1+ (point))))

(defun emc-remove-cursor-at-point ()
