              "K" (lambda () (interactive) (insert "\n")))
 
        (bind evil-visual-state-map
+
+             ;; Visually move up and down lines
+             "j" 'evil-next-visual-line
+             "k" 'evil-previous-visual-line
+             "<up>" 'evil-previous-visual-line
+             "<down>" 'evil-next-visual-line
+
              ;; Swap ; and :
              ";" 'evil-ex
              ":" 'evil-repeat-find-char
+
+             ;; Swap 0 and ^, with visual move
+             "0" 'evil-first-non-blank-of-visual-line
+             "^" 'evil-beginning-of-visual-line
+             "$" 'evil-end-of-visual-line
 
              ;; Preserve visual mode
              "<" (lambda ()

         "x" 'ivy-switch-buffer
         "y" 'counsel-yank-pop))

(progn (pkg 'fzf)
       (evil-leader/set-key
         "z" 'fzf))

(progn (pkg 'which-key)
       (setq-default which-key-idle-delay 0.5)

             ;; Visually move up and down lines
             "j" 'evil-next-visual-line
             "k" 'evil-previous-visual-line
             "<up>" 'evil-previous-visual-line
             "<down>" 'evil-next-visual-line

             ;; Swap ; and :
             ";" 'evil-ex
