một giải pháp khác là chỉ sử dụng công cụ cli nếu có thể,
Ưu điểm của giải pháp này là clipboard luôn có thể sử dụng được (ví dụ: khi bạn ssh từ xa).
Câu trả lời của tôi có hai phần. phần một giới thiệu một số công cụ tiện dụng để thao tác với bảng tạm. phần hai sẽ trả lời câu hỏi ban đầu của bạn (lưu clipboard vào vòng kill).
PHẦN MỘT
Chèn mã dưới đây vào ~ / .emacs của bạn:
(setq *is-a-mac* (eq system-type 'darwin))
(setq *cygwin* (eq system-type 'cygwin) )
(setq *linux* (or (eq system-type 'gnu/linux) (eq system-type 'linux)) )
(defun copy-to-x-clipboard ()
(interactive)
(if (region-active-p)
(progn
(cond
((and (display-graphic-p) x-select-enable-clipboard)
(x-set-selection 'CLIPBOARD (buffer-substring (region-beginning) (region-end))))
(t (shell-command-on-region (region-beginning) (region-end)
(cond
(*cygwin* "putclip")
(*is-a-mac* "pbcopy")
(*linux* "xsel -ib")))
))
(message "Yanked region to clipboard!")
(deactivate-mark))
(message "No region active; can't yank to clipboard!")))
(defun paste-from-x-clipboard()
(interactive)
(cond
((and (display-graphic-p) x-select-enable-clipboard)
(insert (x-selection 'CLIPBOARD)))
(t (shell-command
(cond
(*cygwin* "getclip")
(*is-a-mac* "pbpaste")
(t "xsel -ob"))
1))
))
(defun my/paste-in-minibuffer ()
(local-set-key (kbd "M-y") 'paste-from-x-clipboard)
)
(add-hook 'minibuffer-setup-hook 'my/paste-in-minibuffer)
PHẦN HAI
chèn mã bên dưới vào ~ / .emacs của bạn và từ giờ trở đi, sử dụng "Mx paste-from-clipboard-and-cc-kill-ring" để dán:
(defun paste-from-clipboard-and-cc-kill-ring ()
"paste from clipboard and cc the content into kill ring"
(interactive)
(let (str)
(with-temp-buffer
(paste-from-x-clipboard)
(setq str (buffer-string)))
;; finish the paste
(insert str)
;; cc the content into kill ring at the same time
(kill-new str)
))