This overloads the current behavior to re-select (found at djoyner/dotfiles/emacs/lisp/evil-config.el#L36-L40).
; Overload shifts so that they don't lose the selection (define-key evil-visual-state-map (kbd ">") 'djoyner/evil-shift-right-visual) (define-key evil-visual-state-map (kbd "<") 'djoyner/evil-shift-left-visual) (define-key evil-visual-state-map [tab] 'djoyner/evil-shift-right-visual) (define-key evil-visual-state-map [S-tab] 'djoyner/evil-shift-left-visual) (defun djoyner/evil-shift-left-visual () (interactive) (evil-shift-left (region-beginning) (region-end)) (evil-normal-state) (evil-visual-restore)) (defun djoyner/evil-shift-right-visual () (interactive) (evil-shift-right (region-beginning) (region-end)) (evil-normal-state) (evil-visual-restore))