函数
(defun spacemacs/alternate-buffer (&optional window)
"Switch back and forth between current and last buffer in the
current window."
(interactive)
(let ((current-buffer (window-buffer window))
(buffer-predicate
(frame-parameter (window-frame window) 'buffer-predicate)))
;; switch to first buffer previously shown in this window that matches
;; frame-parameter `buffer-predicate'
(switch-to-buffer
(or (cl-find-if (lambda (buffer)
(and (not (eq buffer current-buffer))
(or (null buffer-predicate)
(funcall buffer-predicate buffer))))
(mapcar #'car (window-prev-buffers window)))
;; `other-buffer' honors `buffer-predicate' so no need to filter
(other-buffer current-buffer t)))))
绑定的evil快捷键代码
(evil-leader/set-key
"f f" 'counsel-find-file
":" 'counsel-M-x
; search and replace
"s" 'swiper
; 这里绑定了快捷键
"TAB" 'spacemaces/alternate-buffer
如果直接使用 M-x
调用函数,可以正常切换buffer。但是快捷键的方式就会报错:
command-execute: Wrong type argument: commandp, spacemaces/alternate-buffer