Skip to content

Instantly share code, notes, and snippets.

@gilbertw1
Last active July 5, 2017 07:33
Show Gist options
  • Save gilbertw1/2457144cc55ad5519fe36d63ae4749a3 to your computer and use it in GitHub Desktop.
Save gilbertw1/2457144cc55ad5519fe36d63ae4749a3 to your computer and use it in GitHub Desktop.
spacemacs keybinds
(evil-define-operator evil-delete-char-without-register (beg end type reg)
"delete character without yanking unless in visual mode"
:motion evil-forward-char
(interactive "<R><y>")
(if (evil-visual-state-p)
(evil-delete beg end type reg)
(evil-delete beg end type ?_)))
(evil-define-operator evil-delete-backward-char-without-register (beg end type reg)
"delete backward character without yanking"
:motion evil-backward-char
(interactive "<R><y>")
(evil-delete beg end type ?_))
(evil-define-operator evil-delete-without-register (beg end type reg yank-handler)
(interactive "<R><y>")
(evil-delete beg end type ?_ yank-handler))
(evil-define-operator evil-delete-line-without-register (beg end type reg yank-handler)
(interactive "<R><y>")
(evil-delete-line beg end type ?_ yank-handler))
(evil-define-operator evil-change-without-register (beg end type reg yank-handler)
(interactive "<R><y>")
(evil-change beg end type ?_ yank-handler))
(evil-define-operator evil-change-line-without-register (beg end type reg yank-handler)
"Change to end of line without yanking."
:motion evil-end-of-line
(interactive "<R><y>")
(evil-change beg end type ?_ yank-handler #'evil-delete-line))
(evil-define-command evil-paste-after-without-register (count &optional register yank-handler)
"evil paste before without yanking"
:suppress-operator t
(interactive "P<x>")
(if (evil-visual-state-p)
(evil-visual-paste-without-register count register)
(evil-paste-after count register yank-handler)))
(evil-define-command evil-paste-before-without-register (count &optional register yank-handler)
"evil paste before without yanking"
:suppress-operator t
(interactive "P<x>")
(if (evil-visual-state-p)
(evil-visual-paste-without-register count register)
(evil-paste-before count register yank-handler)))
(evil-define-command evil-visual-paste-without-register (count &optional register)
"Paste over Visual selection."
:suppress-operator t
(interactive "P<x>")
;; evil-visual-paste is typically called from evil-paste-before or
;; evil-paste-after, but we have to mark that the paste was from
;; visual state
(setq this-command 'evil-visual-paste)
(let* ((text (if register
(evil-get-register register)
(current-kill 0)))
(yank-handler (car-safe (get-text-property
0 'yank-handler text)))
new-kill
paste-eob)
(evil-with-undo
(let* ((kill-ring (list (current-kill 0)))
(kill-ring-yank-pointer kill-ring))
(when (evil-visual-state-p)
(evil-visual-rotate 'upper-left)
;; if we replace the last buffer line that does not end in a
;; newline, we use `evil-paste-after' because `evil-delete'
;; will move point to the line above
(when (and (= evil-visual-end (point-max))
(/= (char-before (point-max)) ?\n))
(setq paste-eob t))
(evil-delete-without-register evil-visual-beginning evil-visual-end
(evil-visual-type))
(when (and (eq yank-handler #'evil-yank-line-handler)
(not (eq (evil-visual-type) 'line))
(not (= evil-visual-end (point-max))))
(insert "\n"))
(evil-normal-state)
(setq new-kill (current-kill 0))
(current-kill 1))
(if paste-eob
(evil-paste-after count register)
(evil-paste-before count register)))
(kill-new new-kill)
;; mark the last paste as visual-paste
(setq evil-last-paste
(list (nth 0 evil-last-paste)
(nth 1 evil-last-paste)
(nth 2 evil-last-paste)
(nth 3 evil-last-paste)
(nth 4 evil-last-paste)
t)))))
(define-key evil-normal-state-map (kbd "c") 'evil-change-without-register)
(define-key evil-normal-state-map (kbd "C") 'evil-change-line-without-register)
(define-key evil-normal-state-map (kbd "p") 'evil-paste-after-without-register)
(define-key evil-normal-state-map (kbd "P") 'evil-paste-before-without-register)
(define-key evil-normal-state-map (kbd "\C-k") 'evil-delete-without-register)
(define-key evil-normal-state-map (kbd "x") 'evil-delete-char-without-register)
(define-key evil-normal-state-map (kbd "X") 'evil-delete-backward-char-without-register)
(define-key evil-normal-state-map (kbd "ZZ") 'save-buffer)
(define-key evil-normal-state-map (kbd "H") 'evil-first-non-blank)
(define-key evil-normal-state-map (kbd "L") 'evil-last-non-blank)
(define-key evil-visual-state-map (kbd "H") 'evil-first-non-blank)
(define-key evil-visual-state-map (kbd "L") 'evil-last-non-blank)
(define-key evil-motion-state-map (kbd "H") 'evil-first-non-blank)
(define-key evil-motion-state-map (kbd "L") 'evil-last-non-blank)
(define-key ivy-minibuffer-map (kbd "C-<return>") 'ivy-immediate-done)
(spacemacs/set-leader-keys
"rr" (lambda ()
(interactive)
(counsel-find-file "/ssh:")))
(spacemacs/set-leader-keys
"bh" 'buf-copy-left
"bj" 'buf-copy-down
"bk" 'buf-copy-up
"bl" 'buf-copy-right)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment