it-swarm-ko.tech

Linux에서 Emacs에서 다른 애플리케이션으로 텍스트를 복사하는 방법

Emacs 22.1.1 (X의 KDE, Kubuntu의 자체 창에서)에서 텍스트를 잘라 내면 다른 응용 프로그램에서 붙여 넣을 수 없습니다.

105
memius

다음에 .emacs 파일 :

(setq x-select-enable-clipboard t)
88
memius

여기서 우리의 정의에주의합시다.

  • Emacs copykill-ring-save (보통 M-w).
  • system copy는 일반적으로 누르는 것에서 얻는 것입니다. C-c (또는 응용 프로그램 창에서 "편집-> 복사"를 선택하십시오).
  • X copy는 마우스 커서로 텍스트를 "물리적으로"강조 표시합니다.
  • Emacs pasteyank 명령입니다. C-y).
  • system paste는 일반적으로 누르는 것에서 얻는 것입니다. C-v (또는 응용 프로그램 창에서 "편집-붙여 넣기"선택).
  • X paste는 "가운데 마우스 버튼"을 누르고 있습니다 (왼쪽 및 오른쪽 마우스 버튼을 함께 눌러 시뮬레이션).

제 경우에는 (그놈) :

  • Emacs와 시스템 복사는 일반적으로 X 페이스트와 함께 작동합니다.
  • X 복사는 일반적으로 Emacs 페이스트와 함께 작동합니다.
  • Emacs paste로 시스템 복사 작업을 수행하고 Epasts 복사로 시스템 복사 작업을 수행하려면 (setq x-select-enable-clipboard t) 너의 ~에게 .emacs. 아니면 시도

    META-X set-variable RET x-select-enable-clipboard RET t
    

나는 이것이 꽤 표준적인 현대 유닉스 행동이라고 생각합니다.

또한 Emacs를 별도의 창에서 사용한다고 말하지만 Emacs가 콘솔에서 실행될 때 시스템 및 X 클립 보드와 완전히 분리됩니다.이 경우 잘라 내기 및 붙여 넣기는 터미널에 의해 중재됩니다 . 예를 들어, 터미널 창의 "편집-> 붙여 넣기"는 클립 보드에서 Emacs 버퍼에 텍스트를 입력 한 것처럼 정확하게 작동해야합니다.

118
Chris Conway

나는 이것을 .emacs에 붙인다.

(setq x-select-enable-clipboard t)
(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)

나는 기본적으로 Emacs의 다른 것에서 다른 X11 또는 Gnome 응용 프로그램으로 자르고 붙여 넣는 데 아무런 문제가 없습니다.

보너스 : 전체 .emacs를 다시로드하지 않고 Emacs에서 이러한 일이 발생하도록하려면 .emacs 버퍼에서 각 표현식의 닫기 paren 직후에 커서로 C-x C-e를 수행하십시오.

행운을 빕니다!

10
jfm3

Emacs에서 복사하여 붙여 넣기하는 데 어려움은 내부 kill/yank와 독립적으로 작동하고 터미널과 GUI에서 모두 작동하기를 원한다는 것입니다. 터미널이나 GUI에 대한 기존의 강력한 솔루션이 있지만 둘다는 아닙니다. xsel을 설치 한 후 (예 : Sudo apt-get install xsel), 복사 및 붙여 넣기로 결합한 작업은 다음과 같습니다.

(defun copy-to-clipboard ()
  (interactive)
  (if (display-graphic-p)
      (progn
        (message "Yanked region to x-clipboard!")
        (call-interactively 'clipboard-kill-ring-save)
        )
    (if (region-active-p)
        (progn
          (Shell-command-on-region (region-beginning) (region-end) "xsel -i -b")
          (message "Yanked region to clipboard!")
          (deactivate-mark))
      (message "No region active; can't yank to clipboard!")))
  )

(defun paste-from-clipboard ()
  (interactive)
  (if (display-graphic-p)
      (progn
        (clipboard-yank)
        (message "graphics active")
        )
    (insert (Shell-command-to-string "xsel -o -b"))
    )
  )

(global-set-key [f8] 'copy-to-clipboard)
(global-set-key [f9] 'paste-from-clipboard)
10
RussellStewart

나는 emacs에 의해 X 아래의 Emacs를 의미한다고 가정합니다 (즉, 터미널 창 안에 있지 않음).

두 가지 방법이 있습니다.

  1. (UNIX OS에만 적용) 마우스로 원하는 텍스트를 강조 표시 한 다음 (X 클립 보드에 복사) 가운데 클릭하여 붙여 넣습니다.
  2. 원하는 텍스트를 강조 표시 한 다음 "M-x 클립 보드-킬 링 링 저장"(더 쉬운 키에 바인딩 할 수 있음) 그런 다음 좋아하는 앱에서 "편집-> 붙여 넣기"만하면됩니다.

사용 가능한 클립 보드 작업 :

  • clipboard-kill-ring-save-Emacs에서 클립 보드로 선택 물 복사
  • clipboard-kill-region-Emacs에서 클립 보드로 선택 잘라 내기
  • clipboard-yank-클립 보드에서 Emacs로 붙여 넣기
7
pdq

X에서 복사 및 붙여 넣기와 관련된 일부 문제와 작동하도록 구성하는 방법을 설명하는 EmacsWiki 기사 가 있습니다.

6
cschol

Mac OSX에서 M-w와 함께 작동합니다. . emacs 파일에 추가하십시오.

(defun copy-from-osx ()
   (Shell-command-to-string "pbpaste"))
(defun paste-to-osx (text &optional Push)
   (let ((process-connection-type nil))
      (let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
         (process-send-string proc text)
         (process-send-eof proc))))

(setq interprogram-cut-function 'paste-to-osx)
(setq interprogram-paste-function 'copy-from-osx)

출처 https://Gist.github.com/the-kenny/267162

4
cevaris

위의 @RussellStewart의 답변에서 영감을 얻은 아래 코드는 x-PRIMARY 및 x-SECONDARY에 대한 지원을 추가하고 region-active-puse-region-p 빈 영역의 경우를 포함하여 xsel이 설치되지 않은 경우 자동으로 리턴되지 않으며 (오류 메시지를 리턴 함) "잘라 내기"기능 (emacs C-y, windows C-x)을 포함합니다.

(defun my-copy-to-xclipboard(arg)
  (interactive "P")
  (cond
    ((not (use-region-p))
      (message "Nothing to yank to X-clipboard"))
    ((and (not (display-graphic-p))
         (/= 0 (Shell-command-on-region
                 (region-beginning) (region-end) "xsel -i -b")))
      (error "Is program `xsel' installed?"))
    (t
      (when (display-graphic-p)
        (call-interactively 'clipboard-kill-ring-save))
      (message "Yanked region to X-clipboard")
      (when arg
        (kill-region  (region-beginning) (region-end)))
      (deactivate-mark))))

(defun my-cut-to-xclipboard()
  (interactive)
  (my-copy-to-xclipboard t))

(defun my-paste-from-xclipboard()
  "Uses Shell command `xsel -o' to paste from x-clipboard. With
one prefix arg, pastes from X-PRIMARY, and with two prefix args,
pastes from X-SECONDARY."
  (interactive)
  (if (display-graphic-p)
    (clipboard-yank)
   (let*
     ((opt (prefix-numeric-value current-prefix-arg))
      (opt (cond
       ((=  1 opt) "b")
       ((=  4 opt) "p")
       ((= 16 opt) "s"))))
    (insert (Shell-command-to-string (concat "xsel -o -" opt))))))

(global-set-key (kbd "C-c C-w") 'my-cut-to-xclipboard)
(global-set-key (kbd "C-c M-w") 'my-copy-to-xclipboard)
(global-set-key (kbd "C-c C-y") 'my-paste-from-xclipboard)
1
user1404316

다른 답변에 따라 다음을 사용하여 C-x C-wC-x C-y Mac과 Linux에서 모두 복사하여 붙여 넣습니다 (누군가 Windows 용 버전을 알고 있다면 자유롭게 추가하십시오). Linux에서는 패키지 관리자와 함께 xsel 및 xclip을 설치해야합니다.

;; Commands to interact with the clipboard

(defun osx-copy (beg end)
  (interactive "r")
  (call-process-region beg end  "pbcopy"))

(defun osx-paste ()
  (interactive)
  (if (region-active-p) (delete-region (region-beginning) (region-end)) nil)
  (call-process "pbpaste" nil t nil))

(defun linux-copy (beg end)
  (interactive "r")
  (call-process-region beg end  "xclip" nil nil nil "-selection" "c"))

(defun linux-paste ()
  (interactive)
  (if (region-active-p) (delete-region (region-beginning) (region-end)) nil)
  (call-process "xsel" nil t nil "-b"))

(cond
 ((string-equal system-type "darwin") ; Mac OS X
  (define-key global-map (kbd "C-x C-w") 'osx-copy)
  (define-key global-map (kbd "C-x C-y") 'osx-paste))
 ((string-equal system-type "gnu/linux") ; linux
  (define-key global-map (kbd "C-x C-w") 'linux-copy)
  (define-key global-map (kbd "C-x C-y") 'linux-paste)))
0
asmeurer

흠, 어떤 플랫폼과 어떤 버전의 emacs를 사용하고 있습니까? Windows Vista에서 GNU Emacs 22.1.1)을 사용하면 제대로 작동합니다.

우연히 RealVNC 뷰어를 통해 Windows에서 Linux로이 작업을 수행하는 경우 먼저 Linux 상자에서 "vncconfig -iconic"을 실행 중인지 확인하십시오 .....

0
kfh

나는 항상 빠른 붙여 넣기를 사용합니다-emacs에서 드래그 선택, 대상 창에서 마우스 가운데 버튼을 누르십시오.

(kate에 대한 언급에서, 나는 당신이 리눅스 또는 비슷한 것을 사용하고 아마도 어떤 식 으로든 X에서 emacs를 사용하고 있다고 생각합니다.)

0
cannam

사용중인 플랫폼을 지정할 수 있습니다. 리눅스, 유닉스, macosx, 윈도우, MS-DOS에 있습니까?

나는 창문의 경우 작동해야한다고 생각합니다. MacOSX의 경우 x-windows 클립 보드에 추가되며 macosx 클립 보드와 동일하지 않습니다. 리눅스의 경우, 윈도우 관리자의 취향에 달려 있지만 x-windows는 대부분의 경우 좋은 방법으로 처리한다고 생각합니다.

따라서 지정하십시오.

0
Mats Fredriksson