5

我在没有 X-window 的远程机器上使用 Emacs。问题是从外部剪贴板(Shift+ Ins)的复制/粘贴非常慢。

在Vim中,set paste当我需要粘贴时有一个选项,那么Emacs有没有类似的功能?

我目前正在尝试一些解决方法:在粘贴之前,我将主要模式更改为fundamental-mode,然后禁用模式行中显示的次要模式以尽可能减少副作用。但是,它仍然比开始时慢得多emacs -Q。并且在显示区域(minibuffer)中,有以“matches ...”(括号等)开头的消息。

那么如何正确解决呢?

4

2 回答 2

5

我不知道 Emacs 有这样的“粘贴模式”。您可以从以下内容开始(新版本,使用单独的缓冲区,以便当前缓冲区的 *-change-functions 仅在最后调用一次):

(defvar ttypaste-mode nil)
(add-to-list 'minor-mode-alist '(ttypaste-mode " Paste"))

(defun ttypaste-mode ()
  (interactive)
  (let ((buf (current-buffer))
        (ttypaste-mode t))
    (with-temp-buffer
      (let ((stay t)
            (text (current-buffer)))
        (redisplay)
        (while stay
          (let ((char (let ((inhibit-redisplay t)) (read-event nil t 0.1))))
            (unless char
              (with-current-buffer buf (insert-buffer-substring text))
              (erase-buffer)
              (redisplay)
              (setq char (read-event nil t)))
            (cond
             ((not (characterp char)) (setq stay nil))
             ((eq char ?\r) (insert ?\n))
             ((eq char ?\e)
              (if (sit-for 0.1 'nodisp) (setq stay nil) (insert ?\e)))
             (t (insert char)))))
        (insert-buffer-substring text)))))
于 2013-09-09T13:59:04.870 回答
1

如果您更喜欢经过更多测试和使用的东西:

;; enable clipboard interaction between emacs and system
(setq x-select-enable-clipboard t)

这个对我有用。一个简单的 Cy,你就可以开始了!希望有帮助。

于 2013-09-10T07:45:58.883 回答