जब मैं Emacs में 22.1.1 (KDE में, KDE पर, KDE में अपनी खिड़की पर) में टेक्स्ट को काटता हूं (मारता हूं), तो मैं इसे किसी अन्य एप्लिकेशन में पेस्ट (यैंक) नहीं कर सकता।
जब मैं Emacs में 22.1.1 (KDE में, KDE पर, KDE में अपनी खिड़की पर) में टेक्स्ट को काटता हूं (मारता हूं), तो मैं इसे किसी अन्य एप्लिकेशन में पेस्ट (यैंक) नहीं कर सकता।
जवाबों:
यहां हमारी परिभाषाओं के साथ सावधान रहें
kill-ring-save
(आमतौर पर बाध्य है M-w)।yank
(आमतौर पर बाध्य है C-y)।मेरे मामले में (GNOME पर):
Emacs पेस्ट के साथ सिस्टम कॉपी वर्क करने के लिए और Emacs कॉपी पेस्ट सिस्टम पेस्ट के साथ काम करने के लिए, आपको (setq x-select-enable-clipboard t)
इसे अपने साथ जोड़ना होगा .emacs
। या कोशिश करें
META-X set-variable RET x-select-enable-clipboard RET t
मुझे लगता है कि यह बहुत मानक आधुनिक यूनिक्स व्यवहार है।
यह नोट करना भी महत्वपूर्ण है (हालांकि आप कहते हैं कि आप एक अलग विंडो में Emacs का उपयोग कर रहे हैं) जब Emacs कंसोल में चल रहा होता है, तो यह सिस्टम और X क्लिपबोर्ड से पूरी तरह से तलाक हो जाता है: उस स्थिति में कट और पेस्ट टर्मिनल द्वारा मध्यस्थता करता है । उदाहरण के लिए, अपनी टर्मिनल विंडो में "एडिट-> पेस्ट" ठीक उसी तरह से कार्य करना चाहिए जैसे कि आपने क्लिपबोर्ड से टेक्स्ट को एमएसीएस बफर में टाइप किया हो।
META-X set-variable RET select-enable-clipboard RET t
या(setq select-enable-clipboard t)
अपनी .emacs
फ़ाइल में निम्नलिखित डालें :
(setq x-select-enable-clipboard t)
emacs -nw
, तो मैं टर्मिनल के स्वयं के शॉर्टकट का उपयोग करता हूं; कॉपी करने (मारने) के लिए Shift-Ctrl-X, और कॉपी करने के लिए Shift-Ctrl-C।
emacs -nw
क्षैतिज रूप से विभाजित tmux windows के अंदर चलाते हैं तो यह काम नहीं होने वाला है ।
मैं इसे अपने .emacs में चिपका देता हूं:
(setq x-select-enable-clipboard t)
(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
बाद में मुझे मूल रूप से Emacs में किसी भी अन्य X11 या Gnome एप्लिकेशन से कुछ भी काटने और चिपकाने में कोई समस्या नहीं है।
बोनस: अपने पूरे .emacs को फिर से लोड किए बिना Emacs में होने वाली इन चीजों को प्राप्त करने के लिए, .emacs बफर में से प्रत्येक के करीब भाव के ठीक बाद कर्सर के साथ Cx Ce करें।
सौभाग्य!
Symbol’s function definition is void: x-cut-buffer-or-selection-value
Emacs में कॉपी और पेस्ट करने में कठिनाई यह है कि आप इसे आंतरिक मार / यान से स्वतंत्र रूप से काम करना चाहते हैं, और आप चाहते हैं कि यह टर्मिनल और गुई दोनों में काम करे। टर्मिनल या गुई के लिए मौजूदा मजबूत समाधान हैं, लेकिन दोनों नहीं। 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)
मुझे लगता है कि आप एक्स (एक टर्मिनल विंडो के अंदर नहीं) के तहत Emacs अर्थ हैं, जो emacs के द्वारा होता है।
इसके दो तरीके हैं:
क्लिपबोर्ड संचालन उपलब्ध:
नहीं है एक EmacsWiki लेख कि एक्स के तहत प्रति और चिपकाने और कैसे काम करने के लिए यह कॉन्फ़िगर करने के लिए के साथ कुछ मुद्दों बताते हैं।
यह M-w
मैक OSX पर काम करता है । बस अपने .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)
नीचे दिए गए कोड, @ ऊपर RussellStewart के जवाब से प्रेरित, के लिए समर्थन जोड़ता एक्स प्राथमिक और एक्स-माध्यमिक बदलता है, region-active-p
के साथ use-region-p
एक खाली क्षेत्र के मामले को कवर करने, चुपचाप वापस नहीं करता है, तो xsel (रिटर्न एक त्रुटि संदेश) नहीं स्थापित किया गया है, और "कट" फ़ंक्शन (इमेक साइ, विंडोज़ सीएक्स) शामिल है।
(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-x C-w
और C-x C-y
हो कॉपी और पर दोनों मैक और लिनक्स पेस्ट (किसी Windows के लिए संस्करण जानता है इसे जोड़ने के लिए स्वतंत्र लग रहा है)। ध्यान दें कि लिनक्स पर आपको अपने पैकेज मैनेजर के साथ 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)))
xclip
क्लिपबोर्ड सामग्री को चिपकाने के लिएxclip -o
। यह उन लोगों के लिए उपयोगी हो सकता है जो पहले से ही हैं xclip
और कॉपी और पेस्टिंग दोनों करने के लिए एक और प्रोग्राम इंस्टॉल नहीं करना चाहते हैं।
हम्म, आप किस प्लेटफॉर्म और किस संस्करण का उपयोग कर रहे हैं? Windows Vista पर GNU Emacs 22.1.1 के साथ, यह मेरे लिए ठीक काम करता है।
अगर, किसी भी संयोग से, आप एक RealVNC दर्शक के माध्यम से विंडोज़ से लिनक्स पर कर रहे हैं, तो सुनिश्चित करें कि आप पहले लिनक्स बॉक्स पर "vncconfig -iconic" चला रहे हैं ....।
आप यह निर्दिष्ट करना चाह सकते हैं कि आप किस प्लेटफ़ॉर्म का उपयोग कर रहे हैं। क्या यह linux, unix, macosx, windows, ms-dos पर है?
मेरा मानना है कि खिड़कियों के लिए यह काम करना चाहिए। MacOSX के लिए इसे x-windows क्लिपबोर्ड में जोड़ा जाएगा, जो कि macosx क्लिपबोर्ड के समान नहीं है। लिनक्स के लिए, यह विंडो मैनेजर के आपके स्वाद पर निर्भर करता है, लेकिन मेरा मानना है कि एक्स-विंडो इसे उनमें से अधिकांश पर एक अच्छे तरीके से संभालती है।
तो, कृपया निर्दिष्ट करें।
मैं एक अच्छे टर्मिनल टूल का उपयोग करना चाहता हूं (विंडोज पर PuTTY, लिनक्स पर लिनक्स या टर्मिनल) जिसमें अंतर्निहित सुविधाओं की प्रतिलिपि है।
PuTTY में, आप उस पाठ को हाइलाइट करते हैं जिसे आप माउस से चाहते हैं और फिर उसे कहीं और चिपकाएँ। एक PuTTY विंडो में राइट-क्लिक करने से विंडोज कॉपी / पेस्ट बफर की सामग्री चिपक जाती है।
लिनक्स पर कोनोलास या टर्मिनल में, आप जो चाहते हैं उसे हाइलाइट करें और फिर कॉपी के लिए Shift + Ctrl + C दबाएं और पेस्ट के लिए Shift + Ctrl + V दबाएं।
Emacs के win32 संकलन में, पाठ को कॉपी / पेस्ट बफर पर रखा जाता है .. अधिकांश समय।
मैक ओएस एक्स पर, ऐप्पल-की-चॉर्टकट ठीक काम करते हैं, क्योंकि टर्मिनल उन्हें फंसाता है।
कमांडलाइन पर इसे करने का कोई सीधा तरीका नहीं है क्योंकि शेल प्रत्येक एप्लिकेशन के लिए कॉपी / पेस्ट बफर को बनाए नहीं रखता है। बैश अपने लिए कॉपी / पेस्ट बफर रखता है, और डिफ़ॉल्ट रूप से, emacs ^ k / ^ y शॉर्टकट काम करता है।