Khi tôi cắt văn bản (kill) trong Emacs 22.1.1 (trong cửa sổ riêng của nó trên X, trong KDE, trên Kubuntu), tôi không thể dán (yank) nó trong bất kỳ ứng dụng nào khác.Cách sao chép văn bản từ Emacs sang ứng dụng khác trên Linux
Trả lời
Chèn đoạn mã sau vào tập tin .emacs
của bạn:
(setq x-select-enable-clipboard t)
Hmm, bạn đang sử dụng nền tảng nào và bạn đang sử dụng phiên bản nào của emac? Với GNU Emacs 22.1.1 trên Windows Vista, nó hoạt động tốt cho tôi.
Nếu, bởi bất kỳ cơ hội, bạn đang làm điều này từ Windows sang Linux thông qua một người xem RealVNC, hãy chắc chắn bạn đang chạy "vncconfig -iconic" trên hộp linux đầu tiên .....
Những gì tôi làm là sử dụng một công cụ thiết bị đầu cuối tốt (PuTTY trên Windows, Konsole hoặc Terminal trên Linux) có các tiện ích sao chép tích hợp sẵn.
Trong PuTTY, bạn đánh dấu văn bản bạn muốn bằng chuột rồi dán vào nơi khác. Nhấp chuột phải vào cửa sổ PuTTY sẽ dán nội dung của bộ đệm sao chép/dán Windows.
Trong Konsole hoặc Terminal trên Linux, bạn làm nổi bật những gì bạn muốn sau đó nhấn Shift + Ctrl + C để sao chép và Shift + Ctrl + V để dán.
Trong win32 biên dịch các emacs, văn bản yanking đặt nó trên bộ đệm sao chép/dán .. hầu hết thời gian.
Trên Mac OS X, phím tắt của Apple hoạt động tốt, vì Thiết bị đầu cuối bẫy chúng.
Không có cách trực tiếp để thực hiện nó trên dòng lệnh vì trình bao không duy trì bộ đệm sao chép/dán cho mỗi ứng dụng. bash không duy trì bộ đệm sao chép/dán cho chính nó và theo mặc định, các phím tắt emacs^k/^ y hoạt động.
Tôi luôn sử dụng lựa chọn kéo nhanh trong các emacs, nhấn nút chuột giữa trong cửa sổ mục tiêu.
(Từ tài liệu tham khảo để kate, tôi mang nó bạn đang ở trên linux hoặc tương đương và có lẽ sử dụng emacs trong X cách này hay cách khác.)
Bạn có thể muốn xác định những nền tảng mà bạn đang sử dụng. Có phải trên linux, unix, macosx, windows, ms-dos không?
Tôi tin rằng đối với cửa sổ, nó sẽ hoạt động. Đối với MacOSX, nó sẽ được thêm vào khay nhớ tạm x-windows, không giống như clipboard tạm thời. Đối với Linux, nó phụ thuộc vào hương vị của trình quản lý cửa sổ của bạn, nhưng tôi tin rằng các cửa sổ x xử lý nó theo cách tốt đẹp trên hầu hết chúng.
Vì vậy, vui lòng nêu rõ.
Có an EmacsWiki article giải thích một số vấn đề với sao chép & dán dưới X và cách định cấu hình để hoạt động.
Tôi giả định bởi emacs bạn có nghĩa là Emacs dưới X (nghĩa là không nằm trong cửa sổ đầu cuối).
Có hai cách:
- (Áp dụng cho unix hệ điều hành duy nhất) Bôi đen văn bản mong muốn với chuột (bản sao này nó vào X clipboard) và sau đó click chuột giữa để dán.
- Đánh dấu văn bản mong muốn và sau đó "M-x clipboard-kill-ring-save" (lưu ý bạn có thể liên kết mã này với khóa dễ dàng hơn ).Sau đó, chỉ cần "Chỉnh sửa-> Dán" trong ứng dụng yêu thích của bạn.
hoạt động Clipboard sẵn:
- vào clipboard-kill-ring-tiết kiệm - sao chép lựa chọn từ Emacs vào clipboard
- vào clipboard-kill-khu vực - cắt lựa chọn từ Emacs vào clipboard
- clipboard-yank - dán từ khay nhớ tạm vào Emacs
Hãy cẩn thận với các định nghĩa của chúng tôi ở đây
- Một Emacs sao chép là lệnh
kill-ring-save
(thường là bị ràng buộc để M-w). - A bản sao hệ thống là những gì bạn thường nhận được khi nhấn C-c (hoặc chọn "Chỉnh sửa-> Sao chép" trong cửa sổ ứng dụng).
- An X copy là văn bản đánh dấu "vật lý" bằng con trỏ chuột.
- An Dán Emacs là lệnh
yank
(thường được liên kết với C-y). - A dán hệ thống là những gì bạn thường nhận được khi nhấn C-v (hoặc chọn "Chỉnh sửa dán" trong cửa sổ ứng dụng).
- An X dán đang nhấn "nút chuột giữa" (được mô phỏng bằng cách nhấn các nút chuột trái và phải).
Trong trường hợp của tôi (trên Gnome):
- Cả Emacs và sao chép hệ thống thường làm việc với X dán.
- Bản sao X thường hoạt động với dán Emacs.
Để sao chép hệ thống làm việc với dán Emacs và công việc sao chép Emacs bằng dán hệ thống, bạn cần thêm
(setq x-select-enable-clipboard t)
vào.emacs
của mình. Hoặc thửMETA-X set-variable RET x-select-enable-clipboard RET t
Tôi nghĩ rằng đây là hành vi Unix hiện đại khá chuẩn. Nó cũng quan trọng cần lưu ý (mặc dù bạn nói bạn đang sử dụng Emacs trong một cửa sổ riêng biệt) khi Emacs đang chạy trong một giao diện điều khiển, nó hoàn toàn ly dị khỏi hệ thống và X clipboards: cắt và dán trong trường hợp đó là trung gian bởi các thiết bị đầu cuối. Ví dụ: "Chỉnh sửa-> Dán" trong cửa sổ đầu cuối của bạn sẽ hoạt động chính xác như khi bạn nhập văn bản từ khay nhớ tạm vào bộ đệm Emacs.
[Đây là thuật ngữ khó hiểu] (http://unix.stackexchange.com/questions/158082/what-are-system-copy-and-paste). Tên tiêu chuẩn và ít gây nhầm lẫn, cho những gì bạn gọi là "X sao chép/dán" là lựa chọn chính X. Những gì bạn gọi là "sao chép hệ thống/dán" là clipboard X. – Gilles
tôi dính này trong emacs của tôi:
(setq x-select-enable-clipboard t)
(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
tôi sau đó có về cơ bản không có vấn đề cắt và dán qua lại từ bất cứ điều gì trong Emacs cho bất kỳ ứng dụng X11 hoặc Gnome khác.
Tiền thưởng: để có được những điều này xảy ra trong Emacs mà không phải tải lại toàn bộ .emacs của bạn, hãy làm C-x C-e bằng con trỏ ngay sau dấu đóng của mỗi biểu thức trong bộ đệm .emacs.
Chúc may mắn!
Giải pháp này hoạt động cho emacs trong một cửa sổ X tức là emacs đang chạy bên trong một cửa sổ nếu bạn đang chạy emacs trong dòng lệnh những gì bạn cần là: http://stackoverflow.com/questions/5288213/how-can-i -paste-the-selected-region-outside-of-emacs – elviejo79
Khó khăn khi sao chép và dán trong Emacs là bạn muốn nó hoạt động độc lập với nội bộ kill/yank và bạn muốn nó hoạt động cả trong terminal và gui. Hiện có các giải pháp mạnh mẽ cho thiết bị đầu cuối hoặc gui, nhưng không phải cả hai. Sau khi cài đặt xsel (ví dụ sudo apt-get install xsel
), đây là những gì tôi làm cho sao chép và dán để kết hợp chúng:
(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)
Vì tôi nhận được lỗi vì không có thông số. Tôi cần phải thay đổi dòng đầu tiên "(defun copy-to-clipboard()" thành "(defun copy-from-ubuntu (text & push tùy chọn)". Điều này làm việc cho tôi: D –
này làm việc với M-w
trên Mac OSX. Chỉ cần thêm vào tệp .emacs của bạn.
(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)
Đoạn code dưới đây, lấy cảm hứng từ @ RussellStewart của câu trả lời ở trên, thêm hỗ trợ cho x-TIỂU và x-TRUNG, thay thế region-active-p
với use-region-p
để trang trải các trường hợp của một khu vực trống rỗng, không trở về âm thầm nếu xsel chưa được cài đặt (trả về một thông báo lỗi), và bao gồm một hàm "cut" (emacs Cy, windows Cx).
(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)
Có bất kỳ lý do nào không ghi đè lên tiêu chuẩn – Paul
@Paul: Các 'keybindings chuẩn' là cho 'emacs clipboard nội bộ', khác với X-clipboard. Tôi trích dẫn từ 'emacs clipboard bên trong' bởi vì thuật ngữ emacs là khác nhau - tham khảo sự xuất sắc của Chris Conway giải thích, ở trên. – user1404316
- 1. sao chép văn bản từ vim sang windows
- 2. Sao chép từ một tệp văn bản này sang một tệp văn bản khác bằng cách sử dụng Python
- 3. Sao chép nội dung của một hộp văn bản sang một hộp văn bản khác
- 4. Sao chép văn bản từ TextView trên Android
- 5. APEX 4.0: cách sao chép trang từ một ứng dụng này sang ứng dụng khác trong APEX
- 6. Emacs sao chép với regex
- 7. WebKit trên iPhone: có thể sao chép văn bản sang clipboad bằng JavaScript
- 8. Cách sao chép giá trị cột văn bản từ một hàng này sang hàng khác trong mySQL
- 9. Sao chép văn bản từ cửa sổ Windows CMD sang clipboard
- 10. Sao chép văn bản và hình ảnh phong phú từ một tài liệu sang MIME trong một tài liệu khác
- 11. Sao chép các hàng từ bảng này sang bảng khác, bỏ qua các bản sao
- 12. Cách tốt nhất để sao chép ứng dụng Java trên Linux
- 13. Có thể sao chép/dán từ Máy tính xách tay IPython sang các ứng dụng khác không?
- 14. Làm cách nào để sao chép dữ liệu nhập từ hộp văn bản này sang hộp văn bản khác qua hộp kiểm bằng jQuery?
- 15. Sao chép từ tệp xml này sang tệp khác - powershell
- 16. Sao chép tệp từ một máy chủ sang một máy chủ khác
- 17. Sao chép tệp từ thư mục này sang thư mục khác bằng cách sử dụng vbscripting
- 18. Bảo quản màu văn bản trong khi sao chép dán trên cửa sổ từ nhật thực sang gmail?
- 19. Sao chép từ văn bản sang div, bảo quản ngắt dòng
- 20. Ứng dụng dựa trên văn bản Java
- 21. Cách sao chép tệp sang đường dẫn khác?
- 22. Làm cách nào để đặt văn bản được sao chép sang clipboard khi hình ảnh được sao chép?
- 23. elasticsearch - cách sao chép dữ liệu sang cụm khác
- 24. Làm cách nào để sử dụng chức năng ghép nối() của Linux để sao chép tệp sang một tệp khác?
- 25. VB: Sao chép một phạm vi sang một ứng dụng Excel khác
- 26. Sao chép văn bản của Vùng đã Chọn vào clipboard
- 27. Có cách nào để sao chép văn bản từ các emacs với các khuôn mặt trong Windows không?
- 28. Cách thích hợp để sao chép tệp tin sóng mang từ bản ghi này sang bản ghi khác là gì?
- 29. Sao chép từ BitmapSource sang WritableBitmap
- 30. Tự động sao chép tệp từ máy Linux sang máy Windows
Không nói gì, cho bạn biết những gì bạn cần biết. Câu trả lời tuyệt vời. – JasonFruit
Hoạt động hoàn hảo, tôi sử dụng Ubuntu 12.04. Cảm ơn – zhihong
Đẹp và đơn giản, nhưng điều này không hoạt động trong thiết bị đầu cuối. Không có lý do tại sao các phím tắt tương tự không nên làm việc cả trong thiết bị đầu cuối và một cửa sổ miễn phí, và một số câu trả lời dưới đây địa chỉ cả hai cùng một lúc. – RussellStewart