Định cấu hình emacs để cắt và sao chép văn bản vào bảng tạm của Mac OS X


16

Tôi có thể định cấu hình emacsđể tôi có thể sao chép / cắt văn bản từ emacs (phiên bản Terminal mặc định) và dán nó vào một nơi khác (vào chương trình X Window) không?


Nitpick: bạn nói "phiên bản Terminal mặc định", nhưng chế độ hoạt động mặc định cho Emacs là sử dụng GUI chứ không phải là thiết bị đầu cuối văn bản. Có lẽ bạn đang đề cập đến chương trình /usr/bin/emacsthực thi cổ xưa được Apple đóng gói với OSX và được giới hạn tùy ý trong thiết bị đầu cuối văn bản?
Stefan

Câu trả lời:


4

Để sao chép vùng hiện tại vào bảng tạm OS X, bạn có thể sử dụng

(shell-command-on-region (region-beginning) (region-end) "pbcopy")

Không nên đảo ngược, sao chép bộ đệm dán OS X vào vòng khử Emacs. Kill ring và clipboard là những cấu trúc rất khác nhau và không có câu trả lời hay cho việc chính xác, đẩy một clipboard vào vòng kill nên làm gì. Tuy nhiên, bạn có thể chạy pbpastethủ công để có được nội dung clipboard hiện tại.


Điều này đã không làm việc cho tôi. Tuy nhiên, giải pháp được đánh dấu trong bài Emacs này không hoạt động.
Galder Zamarreño

8

Thêm cái này vào ~/.emacs:

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

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

(global-set-key (kbd "C-c c") 'pbcopy)
(global-set-key (kbd "C-c v") 'pbpaste)
(global-set-key (kbd "C-c x") 'pbcut)

Nếu bạn sử dụng Emacs trong iTerm 2, bạn cũng có thể ánh xạ lại các tổ hợp phím trong tùy chọn:

Sau đó thêm một cái gì đó như thế này vào ~/.emacs:

(global-set-key (kbd "<f13> c") 'pbcopy)
(global-set-key (kbd "<f13> v") 'pbpaste)
(global-set-key (kbd "<f13> x") 'pbcut)

Vẫn là câu trả lời tốt nhất. Cảm ơn! Lưu ý cho iterm, để tạo các "Hành động" này, hãy chọn "Gửi mã thoát" và bạn bỏ qua "^ [." (không hoạt động với loại hành động "Gửi văn bản")
Jay

3

Đây là một giải pháp để tích hợp Clipboard OS X vào vòng diệt của Emacs bởi Daniel Nelson: https://github.com/wesen/emacs/blob/master/pbcopy.el

Nhận xét của tác giả:

Cho phép kill-ring tương tác với clipboard khi chạy Emacs từ thiết bị đầu cuối Mac OSX (mà không mất chức năng kill-ring đầy đủ). Tất cả tôi đã làm là sửa đổi xclip.elđể làm việc với pbcopypbpaste. Lời cảm ơn thực sự đến Leo Shidai Liu, tác giả của xclip.el.


1

Sau đây chỉ hoạt động, có nó từ đây :)

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

Bạn có thể thêm một liên kết đến bài viết gốc?
Vincent

0

Phiên bản emacs đi kèm với OS X đã quá cũ để cung cấp chức năng này.

May mắn thay, bạn có thể cập nhật emacs lên một phiên bản được tích hợp với clipboard của bạn tại đây: http://emacsformacosx.com

Tôi tin rằng bạn sử dụng Ctrl+ Yđể dán vào emacs, sau khi cập nhật.


À - tôi quên nói - phiên bản emacs mà bạn sẽ tải xuống từ trang đó là đồ họa (tức là nó không chạy trong Terminal). Các ứng dụng trong Terminal không thể truy cập vào bảng tạm mà không bị hack, điều mà tôi không thể tìm thấy nữa. : /
Faiz Saleem

2
pbcopypbpastevẫn tồn tại và không hack.

Điều đó là có thể, tuy nhiên tôi cho rằng OP muốn sử dụng các lệnh bàn phím để sao chép và dán. Điều tôi muốn nói là các ứng dụng Terminal không thể sử dụng phím tắt để sao chép và dán cùng với bảng tạm OS X mà không bị hack.
Faiz Saleem

"Các ứng dụng đầu cuối không thể sử dụng phím tắt để sao chép và dán cùng với bảng tạm OS X mà không bị hack." Điều này rõ ràng là không đúng sự thật, vì pbcopypbpastecả hai đều là ứng dụng đầu cuối; bất kỳ ứng dụng thiết bị đầu cuối nào khác có thể làm những gì họ làm, hoặc chỉ cần gọi trực tiếp cho họ.

Những gì tôi đang tìm kiếm là móc pbcopyvào Emacs cắt và sao chép. Có thể không?
cú pháp

0

Tôi thấy bài đăng này thực sự hữu ích (xác định 2 chức năng và gán phím tắt cho chúng trong tệp ~ / .emacs của bạn).

Sau khi thêm các dòng đó vào tệp .emacs của bạn, bạn sẽ không có quyền truy cập vào các phím tắt đó cho đến khi bạn mở phiên shell mới (tab / cửa sổ). Hãy để những thay đổi được áp dụng.


0

Bạn có thể nhận được sự tương tác như vậy với bảng tạm trong khi chạy Emacs trong thiết bị đầu cuối văn bản bằng cách bật gói xclip-modeđược cung cấp bởi xclipgói mà bạn có thể cài đặt từ GNU ELPA (tức là thông qua M-x package-list-packages RET).

Xem thêm /emacs/10900/ để biết câu hỏi và câu trả lời tương tự.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.