2

我正在使用 emacs 终端模拟器。带有 GNU bash 的 GNU Emacs 23.2.1,版本 3.00.0(1)-release。当某些命令,比如 grep 1 file.txt 打印很长的行时,emacs 将它们中继以适应窗口宽度。但是它对那些行做到了这一点,所以当我复制这样的行时,我得到的不是一条长线,而是几条等宽的线。

例如:

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 

在回应它之后,说cat lorem.ipsum 我得到(如果我有一个 38 字符宽的终端):

Lorem ipsum dolor sit amet, consectet
ur adipisicing elit, sed do eiusmod t
empor incididunt ut labore et dolore 
magna aliqua. 

现在,如果我从终端复制它,我将有 4 行用 \n 字符分隔。很烦人,怎么处理?

4

1 回答 1

1

实际上我没有找到答案,但我已经写了一个快速破解,以便轻松地将此类剪切粘贴到术语中:

;; Linearize the last kill-ring entry
(defun make-single-line-in-clipboard ()
  (interactive)
  (with-temp-buffer
    (yank)
    (pop kill-ring)
    (goto-char 0)
    (while (search-forward "\n" nil t)
      (replace-match "" nil t))
    (kill-region (point-min) (point-max))))

;; Paste into terminal the linearized last killed text
(defun paste-into-term-singlelined ()
  (interactive)
  (term-line-mode)
  (make-single-line-in-clipboard)
  (end-of-buffer)
  (clipboard-yank)
  (term-char-mode))

然后是 Cy 的 binging(我使用多词扩展)。

 (cons "C-y" 'paste-into-term-singlelined)
于 2012-10-30T14:58:05.110 回答