vim - Emacs 中是否有 'set paste' 选项可以从外部剪贴板粘贴?

标签 vim emacs terminal copy-paste putty

我在没有通过腻子的 X 窗口的远程机器上使用 Emacs。问题是从外部剪贴板(Shift+Ins)复制/粘贴很慢。

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

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

那么如何正确解决呢?

最佳答案

我不知道 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)))))

关于vim - Emacs 中是否有 'set paste' 选项可以从外部剪贴板粘贴?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18691973/

相关文章:

vim - 如何在不打印 else 子句的情况下有条件地映射 vim 中的序列以运行外部程序

vim - 禁用VIM中的警告?

vim - 导出Vim折叠?

c++ - 如何在不属于类的 emacs 中查找 C 函数?

python - 获取 ssh 服务器的 64 进制主机 key

vim - 如何在vim中获取背景颜色?

vim - 为什么没有更多的人在毒蛇模式下使用emacs?

Emacs Magit : how can I see differences between a given branch and unstaged changes?

python - 为什么在连接到使用 supervisord 运行的进程时 stdout 不刷新?

c 使用 freopen 和 argv[1] 在终端中创建文件