   (package-refresh-contents)
   (package-install 'use-package))
 (require 'use-package)
+;; Which Key
+(use-package which-key
+  :ensure t
+  :init
+  (setq which-key-separator " ")
+  (setq which-key-prefix-prefix "+")
+  :config
+  (which-key-mode 1))
+
+;; Custom keybindings
+;; Functions
+(defun split-right ()
+  (interactive)
+  (split-window-right)
+  (windmove-right))
+(defun split-down ()
+  (interactive)
+  (split-window-below)
+  (windmove-down))
+;;; Global
+(use-package general
+  :ensure t
+  :config
+  (general-define-key
+   :states '(normal visual insert emacs)
+   :prefix "C-j"
+   :non-normal-prefix "C-j"
+   ;; "/"   '(counsel-rg :which-key "ripgrep") ; You'll need counsel package for this
+   ;; direct keys
+   "TAB" '(switch-to-prev-buffer :which-key "previous buffer")
+   "C-j" '(helm-M-x :which-key "M-x")
+   "F"  '(helm-find-files :which-key "find files")
+   "f"  '(helm-projectile-find-file :which-key "find project files")
+   "p"  '(helm-projectile-switch-project :which-key "choose project")
+   ;; Buffers
+   "b"  '(helm-buffers-list :which-key "buffers list")
+   ;; Window
+   "l"  '(windmove-right :which-key "move right")
+   "L"  '(evil-window-move-far-right :which-key "move right")
+   "h"  '(windmove-left :which-key "move left")
+   "H"  '(evil-window-move-far-left :which-key "move left")
+   "k"  '(windmove-up :which-key "move up")
+   "K"  '(evil-window-move-very-top :which-key "move up")
+   "j"  '(windmove-down :which-key "move down")
+   "J"  '(evil-window-move-very-bottom :which-key "move down")
+   "%"  '(split-right :which-key "split right")
+   "\""  '(split-down :which-key "split down")
+   "d"  '(delete-window :which-key "delete window")
+   "x"  '(kill-buffer-and-window :which-key "kill buffer+window")
+   ;; Terminal
+   "`"  '(ansi-term :which-key "open terminal")
+   ;; Editing
+   "c" '(:ignore t :which-key "code actions")
+   "cc" '(comment-line :which-key "comment code")
+   "cf" '(my-lsp-format :which-key "format code")
+   "cs" '(helm-imenu :which-key "code outline")
+   ))
+
+;; Theming/Appearance
+;; Functions
+(defun fix-doom-dark-theme ()
+  (interactive)
+  (setq
+   doom-themes-enable-bold nil   ; if nil, bold is universally disabled
+   doom-themes-enable-italic t)  ; if nil, italics is universally disabled
+  (set-face-attribute 'mode-line nil
+                      :background "#353535"
+                      :foreground "grey"
+                      :weight 'normal)
+  (set-face-attribute 'mode-line-inactive nil
+                      :background "#131313"
+                      :weight 'normal)
+  (set-face-attribute 'mode-line-buffer-id nil
+                      :foreground "grey"
+                      :weight 'normal))
+(use-package doom-themes
+  :ensure t
+  :config
+  (load-theme 'doom-tomorrow-night t)
+  (fix-doom-dark-theme))
+;; Show colons in modeline
+(column-number-mode 1)
+;; Show matching parens
+(setq show-paren-delay 0)
+(show-paren-mode 1)
 
 ;; Vim mode
 (use-package evil
   :ensure t
   :config
-  (evil-mode 1))
+  (evil-mode 1)
+  (define-key evil-normal-state-map (kbd "K") 'my-lsp-help)
+  (define-key evil-normal-state-map (kbd "J") 'close-help-window)
+  ;; Modify navigation to close help
+  (define-key evil-normal-state-map (kbd "h") 'move-backward)
+  (define-key evil-normal-state-map (kbd "j") 'move-down)
+  (define-key evil-normal-state-map (kbd "k") 'move-up)
+  (define-key evil-normal-state-map (kbd "l") 'move-forward)
+  (define-key evil-normal-state-map (kbd "C-d") 'evil-scroll-down)
+  (define-key evil-normal-state-map (kbd "C-u") 'evil-scroll-up))
 
 (use-package evil-escape
   :ensure t

  (interactive)
  (if (bound-and-true-p lsp-mode)
      (progn
       (lsp-format-buffer)
       (lsp-organize-imports))
    (indent-region (region-beginning) (region-end))))

(defun close-help-window ()

 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(custom-safe-themes
   (quote
    ("7f1263c969f04a8e58f9441f4ba4d7fb1302243355cb9faecb55aec878a06ee9" default))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
