2012-04-02 15 views
32

यह असाधारण रूप से सरल हो सकता है, लेकिन मैं Emacs (22.1.1) के साथ खेल रहा हूं और मुझे नियंत्रण - वाई का उपयोग करके क्लिपबोर्ड में टेक्स्ट पेस्ट करने के लिए नहीं मिल सकता है।ओएसएक्स पर क्लिपबोर्ड से Emacs को पेस्ट करने के लिए कैसे?

+0

बुराई का उपयोग (विम-जैसा व्यवहार अनुकरण), मैं इस चाल का उपयोग करता हूं: ': r! Xsel' या': r! Xsel -b' विस्मयादिबोधक चिह्न के बाद निर्दिष्ट आदेश का आउटपुट क्या पढ़ता है। मैकोज़ पर आप शायद 'pbaste' का उपयोग करेंगे। –

उत्तर

23

यदि आप इन-बिल्ट इमाक्स का उपयोग कर रहे हैं, तो आप टर्मिनल में Emacs चला रहे हैं। "क्लिपबोर्ड" आपके विंडोिंग सिस्टम का एक फ़ंक्शन है। टर्मिनल मोड में Emacs (-nw) किसी भी विंडोिंग सिस्टम विशिष्ट एपीआई तक नहीं पहुंचता है। टर्मिनल में काम करने के लिए डिज़ाइन किए गए अधिकांश कमांड लाइन टूल के बारे में यह सच है।

आपको अपने इमाक्स को अपग्रेड करना होगा जैसा कि अन्य ने सुझाव दिया है, और ग्राफिकल मोड में चलाएं। मैक ओएस एक्स पर Emacs 24 का उपयोग करके, इच्छित व्यवहार डिफ़ॉल्ट है।

यदि आप टर्मिनल का उपयोग करने पर जोर देते हैं, तो this हैक क्लिपबोर्ड काम करेगा।

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

बिल्कुल सही जवाब। एक त्वरित टिप्पणी हालांकि: अगर मैं अपने Emacs को अपग्रेड करता हूं और फिर टर्मिनल में चलाने के लिए -nw का उपयोग करता हूं, तो क्या मैं सिस्टम क्लिपबोर्ड का उपयोग कर पाऊंगा? या अगर मैं Emacs संस्करण के बावजूद टर्मिनल में काम करना चाहता हूं तो मुझे हैक का उपयोग करने की ज़रूरत है? –

+1

टर्मिनल एप्लिकेशन सिस्टम क्लिपबोर्ड तक नहीं पहुंच सकते हैं। हैक हालांकि इतना बुरा नहीं है, मैं अन्य संदर्भों में 'pbcopy' का उपयोग करता हूं। –

+0

ठीक है, मैं फिर हैक का उपयोग करूंगा। धन्यवाद। –

0

Windows पर? मैं M-insh-insert-x-selection करने के लिए बाध्य है, जो मैं परिभाषित किया है इस प्रकार है:

(defun h-insert-x-selection() (interactive) 
    (insert (x-selection 'CLIPBOARD))) 
(global-set-key [(meta insert)] 'h-insert-x-selection) 

XEmacs पर यह अलग है, जहां मैं

(global-set-key [(shift insert)] 'x-insert-selection) 
+0

क्या मैंने उल्लेख किया कि मैं एक नौसिखिया था? :) तो आपको एक साधारण पेस्ट के लिए एक महत्वपूर्ण मैपिंग करना होगा? –

+0

मुझे विंडोज़ पर कुंजी मैपिंग की आवश्यकता थी। मुझे मैक्स ओएसएक्स के बारे में पता नहीं है, लेकिन यदि 'सी-वाई' आपके लिए यह नहीं कर रहा है तो यह सबसे आसान लगता है। –

17

मैं आमतौर पर शिफ्ट का उपयोग + एक Emacs बफर में चिपकाने के लिए सम्मिलित है, मुझे नहीं पता कि आपके कीबोर्ड में उन चाबियाँ हैं या नहीं।

+4

हाँ यह नहीं करता है। हालांकि मैं शुरुआत कर रहा हूं, मुझे यह करना मुश्किल लगता है। –

+0

यांक कमांड आज़माएं, बस एम-एक्स यांक करें। कुंजीपॉर्ड को देखने के लिए जो आपके सिस्टम पर इस कमांड को चलाता है, आप Ch w yank – quicoju

+1

चला सकते हैं यदि यह अभी भी काम नहीं करता है, तो आप क्यूआ-मोड – quicoju

37

M-x clipboard-yank कमांड का उपयोग करने का प्रयास करें। यदि आप क्लिपबोर्ड पर टेक्स्ट कॉपी करना चाहते हैं तो आपको M-x clipboard-kill-region पर जाना होगा।

यह लिनक्स और विंडोज पर काम करता है, मुझे लगता है कि मैक पर यह वही है।

+3

को जांचना चाहेंगे, मैंने वास्तव में आज अपने उबंटू 11.10 पर काम करने की कोशिश की emacs और यह काम नहीं किया। यह कहता है कि हत्या की अंगूठी खाली है। मैं आपके पहले कमांड का उपयोग कर रहा हूँ। –

+1

शानदार! मैं उबंटू 12.04 पर 24.3 emacs चला रहा हूं और XWin सर्वर का उपयोग कर विंडोज 7 के माध्यम से कनेक्ट कर रहा हूं और इसने मेरे विंडोज क्लिपबोर्ड से सामग्री को अपने emacs सत्र में खींच लिया। धन्यवाद! –

+0

यह पुष्टि करते हुए कि यह मैक पर काम करता है - ओएस एक्स 10.8.5 और Emacs 24.3 का उपयोग कर। मैंने Aquamacs के साथ इसका परीक्षण नहीं किया। – jdl

0

यह अजीब बात है।

मैं कमांड-वी का उपयोग करता हूं, और यह हर बार काम करता है।

जब आप टर्मिनल विंडो पर ध्यान केंद्रित करते हैं, तो आप कमांड-पी के माध्यम से चिपकते हुए कुछ भी टर्मिनल में भेजे गए अलग कीस्ट्रोक बन जाते हैं।

मै मैक ओएस एक्स 10.5 (तेंदुए) और emacs 22.1.1 का उपयोग करता हूं।

(require 'simpleclip) 
(defun copy-to-clipboard() 
    (interactive) 
    (let ((thing (if (region-active-p) 
        (buffer-substring-no-properties (region-beginning) (region-end)) 
       (thing-at-point 'symbol)))) 
    (simpleclip-set-contents thing) 
    (message "thing => clipboard!"))) 

(defun paste-from-clipboard() 
    "Paste string clipboard" 
    (interactive) 
    (insert (simpleclip-get-contents))) 

कोड उपयोग simpleclip (https://github.com/rolandwalker/simpleclip)

Simpleclip आप Mac/लिनक्स/जो Cygwin पर कुछ कमांड लाइन टूल स्थापित की आवश्यकता है:

+0

ऐसा लगता है कि उपयोगकर्ता ने अपने इमाक्स को अपडेट करके अपने मुद्दे को पहले ही हल कर लिया है। इसके अलावा, उपयोगकर्ता कमांड-वी का उपयोग नहीं कर रहा था, लेकिन सी-वाई (जो Emacs में "yanking" के लिए डिफ़ॉल्ट कमांड है)। – Default

1

http://blog.binchen.org/?p=589

देखें यहाँ कोड है। तो ग्राफ़िक समर्थन के बिना भी emacs क्लिपबोर्ड तक पहुंच सकता है।

यह समाधान Emacs, किसी भी ओएस के किसी भी संस्करण पर काम करता है। यह भी जब अगर अपने रिमोट ssh सर्वर आगे सक्षम बनाता है एक्स काम करता है, पूरा आदेश है ssh -X -C -c blowfish-cbc,arcfour [email protected])

+0

क्या यह उत्तर X11 तक सीमित नहीं है, इस स्थिति में यह emacs के macOS- मूल संस्करणों के साथ काम नहीं करता है? – EOL

0

ओएस suse 12.2 - Emacs डिफ़ॉल्ट संस्करण 24.2-15.8.2 (x86_64) ctrl-y अंत से क्लिपबोर्ड से सिर्फ नजरअंदाज कर दिया चिपकाने डाउन ग्रेड द्वारा संस्करण 23.3-15.5 में हल की गई समस्या।1 (x86_64)