Emacs에서 OS X 클립 보드로 텍스트 복사


25

일반 GUI 모드 대신 텍스트 터미널에서 Emacs를 실행할 때로 영역 시작을 활성화하여 Emacs에서 복사 C-SPC한 다음 원하는 것을 선택하고 수행 할 수 M-w있습니다.

이 방법으로 복사 한 영역을 OSX 클립 보드에서 사용하여 웹 페이지에 붙여 넣을 수있는 방법이 있습니까?

나는 그것을 할 수있는 다른 지름길을 만들고 싶지 않으며 이상적으로는 모듈을 설치할 필요가 없습니다.

나는 본 적이 이 게시물을 하고 허용 대답을 시도했지만 내가 위의 예상대로 작동하지 작업 않습니다.

다른 아이디어가 있습니까?


야, 질문은 거의 3 살이며 답변되었습니다
Galder Zamarreño

답변:


33

복사 OS X 클립 보드에 이맥스에서 :

지역을 선택한 다음 M-| pbcopy RET

OS X 클립 보드에서 Emacs로 붙여 넣기 :

C-u M-| pbpaste RET (있는 경우 현재 지역을 대체합니다)


설명:

M-|runs shell-command-on-region는 이름에서 알 수 있듯이 현재 영역을 셸 명령으로 파이프합니다. C-u M-|동일한 작업을 수행하지만 현재 영역을 stdout실행중인 명령으로 바꿉니다 .

pbcopypbpaste시스템 클립 보드에 액세스하기위한 OS X 유틸리티입니다.


1
질문에 답하는 것 외에도, 당신의 대답은 emacs에서 쉘 명령을 실행하는 방법을 가르쳐주었습니다.
andreskwan

20

다음은 여기서 작동 합니다.

(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)

여기에 verbage는 거꾸로 보인다
Jordon Biondo

1
악의 모드를 사용하면 이로 인해 악의적 인 붙여 넣기 동작이 중단됩니다.
Felix D.

@FelixD .: xclip-mode같은 문제가 있습니까?
Stefan

복사 및 멀티 바이트 문자를 붙여 넣을 때에 설명 된대로이, Emacs26 깨진 것 같다 emacs.stackexchange.com/questions/50485/...
silencej

9

Emacs를 "일반적인 방법"(예 : GUI 응용 프로그램)으로 사용한다면 이미 기본적으로 그렇게해야합니다. 터미널 에뮬레이터에서 Emacs를 사용하는 경우 실제로 기본적으로 그렇게하는 방법을 알지 못하지만 xclipGNU ELPA 에서 패키지를 설치 한 다음 xclip-modeEmacs에게 GNU / Linux 및 OSX.


xclipOSX 에서 작동 합니까 ? 내가 본 것 중에서 X11과 함께 작동하도록 설계된 것 같습니다. 게시물
Galder Zamarreño

1
xclip.el패키지를 사용하도록 확장되었습니다 pbpaste.
Stefan

어떤 이유로 든 macOS에서 xclip을 사용하면 서버 모드 (일반 인스턴스가 아닌)의 터미널 emacs가 멈 춥니 다.
rien333

직접 버그를 통해 또는 버그를 통해 버그로보고 할 수 M-x report-emacs-bug있습니까?
Stefan

3

Stefan이 말했듯이 그래픽 Emacs 애플리케이션은 기본적으로 그렇게해야합니다.

텍스트 터미널에서 다른 옵션은 다음과 같은 기능을 사용하는 것입니다.

(defun pbcopy ()
  (interactive)
  (let ((deactivate-mark t))
    (call-process-region (point) (mark) "pbcopy")))

(defun pbpaste ()
  (interactive)
  (call-process-region (point) (if mark-active (mark) (point)) "pbpaste" t t))

(defun pbcut ()
  (interactive)
  (pbcopy)
  (delete-region (region-beginning) (region-end)))

그렇지 않은 경우를 제외하고. 20 년 후, 이맥스에서 같은 pb .... 나는 정말로 어딘가에 돌로 자리
잡은

1

다음은 버퍼의 내용을 클립 보드에 복사하는 .emacs 파일에 넣을 수있는 간단한 elisp 함수입니다. 아무것도 선택할 필요가 없습니다. 모두 복사합니다. 코드는 짧고 자명하다.

(defun xclip ()
(interactive)
(shell-command (concat "cat " (buffer-file-name (window-buffer (minibuffer-selected-window))) " | pbcopy")))

emacs를로드하거나 다시로드 한 후 Mx xclip으로 호출하십시오.
jumar

OP는 전체 버퍼를 클립 보드에 복사하도록 요청하지 않았으므로 요청 된 작업을 수행하지 않습니다. 나머지는 다른 사람들이 이미 말한 것을 복제 한 것 같습니다.
Stefan

이것이 주제가 아닌 것처럼 사과합니다. Google에서이 페이지로 이동했는데 "텍스트를 클립 보드 emacs에 복사"의 첫 번째 결과였습니다. 질문의 제목은 "Emacs에서 OS X 클립 보드로 텍스트 복사"입니다. 따라서 해당 검색 결과를 위해 어떻게 여기에 올 수 있는지 쉽게 알 수 있습니다. 나는 그것이 게시 된 문구가 질문에 대한 방식, 그 수퍼 세트에 적용 가능하다고 생각합니다. 나는 이전에 StackExchange 답변을 방문했으며 간단한 답변을 사용할 수 없을 때, 특히 수천 명의 사람들이 질문을한다는 것을 알았을 때 좌절감을 느꼈으므로 혜택을 볼 수있는 사람들을 위해 광산을 추가 할 것이라고 생각했습니다.
jumar

0

clipboard-kill-region및을 확인하십시오 clipboard-yank. 이들은에서 온 것입니다 menu-bar.el.

영역이 강조 표시되면 clipboard-kill-region을 사용하여 붙여 넣기 버퍼와 시스템 클립 보드 모두에서 영역을 종료 할 수 있습니다. clipboard-yank는 현재 시스템 클립 보드에있는 모든 것을 "붙여 넣기"합니다.


답을 넓히십시오.
Dan

해당 명령을 사용하여 emacs에서 무언가를 복사하려고 시도했지만 외부에서 Emacs 외부의 다른 곳으로 복사 할 수 없었습니다.
Galder Zamarreño

@ GalderZamarreño 그것은 Emacs에서 저에게 효과적이며 OSX에 있습니다.
bitops

0

Galder Zamarreño의 답변은 훌륭하지만 put악의 모드에서 악의 와 같은 행동을 깰 수 있습니다. 따라서 나는 그것을 아래에 약간 조정했다. 그것이 더 나을 수 있다고 확신하지만 그것은 나를 위해 일한다. 개선 사항을 제안 해 주시기 바랍니다.

(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))))

----> 새 코드

  (defun clipboard-on ()
    (interactive)
    (setq interprogram-cut-function 'paste-to-osx)
    (setq interprogram-paste-function 'copy-from-osx))
  (defun clipboard-off ()
    (interactive)
    (setq interprogram-cut-function 'gui-select-text)
    (setq interprogram-paste-function 'gui-selection-value))
  (global-set-key (kbd "C-c C-p") 'clipboard-on)
  (global-set-key (kbd "C-c C-y") 'clipboard-off))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.