2012-07-09 31 views
64

पर विम + टमक्स यांक/पेस्ट को ठीक करें एक टीएमयूक्स सत्र के अंदर विम का उपयोग करते समय मैं अनाम नाम पर यंक या पेस्ट नहीं कर सकता। नामित रजिस्टर पर जाना ठीक काम करता है, लेकिन अनामित कभी काम नहीं करता है।अज्ञात रजिस्टर

त्रुटि है:

E353: Nothing in register * 

tmux के बिना, vim मेरे वर्तमान सेटिंग्स का उपयोग कर ठीक काम करता है। मैं इसे कैसे ठीक कर सकता हूं ताकि मैं y का उपयोग कर सकूं तो पी त्रुटियों के बिना और पंजीकरण निर्दिष्ट किए बिना?

+0

क्या आप अपना tmux.conf दिखा सकते हैं? – Conner

उत्तर

94

त्रुटि संदेश से (Nothing in register *), ऐसा लगता है कि जब आप सादा करते हैं?p, आपका उदाहरण वीम * के बजाय * register का उपयोग कर रहा है। ऐसा शायद इसलिए है क्योंकि आपके clipboard option में मूल्य unnamed शामिल है। इस तरह कॉन्फ़िगर किए जाने पर, विम * का नाम बदलकर यंक, डिलीट, चेंज और डिफॉल्ट रूप से संचालन के लिए नामांकित रजिस्टर के बजाय " उपसर्ग के साथ अन्य रजिस्टर निर्दिष्ट करेगा, उदाहरण के लिए "apa रजिस्टर से डालने के लिए)।

* अनामित नाम वास्तव में " (डबल कोट) नाम दिया गया है। यह केवल इस अर्थ में "अज्ञात" है कि आपको इसका उपयोग करने के लिए इसका नाम नहीं देना है (यह डिफ़ॉल्ट है)। अर्थात। अज्ञात रजिस्टर से रखने के लिए आपको ""p कहना नहीं है, बस p

clipboard का डिफ़ॉल्ट मान unnamed नहीं है, इसलिए यह शायद आपके कुछ कॉन्फ़िगरेशन (या प्लगइन) से आ रहा है। आदेश :verbose set clipboard? आपको वह स्क्रिप्ट दिखाएगा जो वर्तमान मान निर्धारित करता है। यदि यह आपकी कॉन्फ़िगरेशन फ़ाइल में किया जा रहा है, तो आप tmux के तहत चल रहे हैं तो आप ऐसा नहीं करना चाहेंगे। उदा:

if $TMUX == '' 
    set clipboard+=unnamed 
endif 

वैकल्पिक रूप से, किसी तरह विम-अंदर tmux पहुँच के उदाहरण जीयूआई चयन/क्लिपबोर्ड (इस प्रकार * रजिस्टर और/या clipboard में unnamed के साथ काम) जाने के लिए हो सकता है। यदि आप मैक ओएस एक्स चला रहे हैं, तो आप my workaround wrapper देख सकते हैं जो tmux सत्र के अंदर चल रही प्रक्रियाओं के लिए क्लिपबोर्ड एक्सेस को फिर से सक्षम करता है। यदि आप किसी अन्य ओएस या जीयूआई का उपयोग कर रहे हैं, तो आपको यह पता लगाना होगा कि विम सामान्य रूप से जीयूआई से कैसे बात करेगा और यह क्यों काम नहीं कर रहा है (उदाहरण के लिए एक्स 11 के तहत गलत प्रदर्शन मूल्य, संभवतः चल रहे पुराने सत्र को जोड़ने के कारण एक खोल जिसमें पुराना मूल्य है)।

+3

आप सही हैं, मेरे .vimrc में क्लिपबोर्ड = अज्ञात रेखा सेट है। मैंने सशर्त जोड़ा और अब यह tmux में और बाहर सही ढंग से काम करता है। – Jason

+0

अन्य सभी उत्तरों यादृच्छिक रूप से बिना किसी दिमाग के अलग-अलग सेटिंग्स आज़माते हैं, केवल आप बताते हैं कि क्यों! धन्यवाद। – nn0p

+2

क्या मुझे इसे ब्रूव में '--with-wrap-pbcopy-and-pbpaste' विकल्प' के साथ स्थापित करना चाहिए? – nn0p

4

fakeclip प्लगइन क्लिपबोर्ड रजिस्टर कई टर्मिनलों में अपेक्षित व्यवहार करता है और टीएमयूक्स/स्क्रीन के लिए समर्थन करता है। क्या आप इसका इस्तेमाल कर रहे हैं? यह आपकी समस्या का समाधान कर सकता है।

साथ ही, आपको इस टिप में रुचि हो सकती है ... यह आपके प्रश्न पर लागू नहीं है, लेकिन संबंधित है। आप किस प्रकार के सिस्टम/टर्मिनल में tmux चला रहे हैं, इस पर निर्भर करते हुए, आपको अपने .tmux.conf में कुछ बदलावों की आवश्यकता हो सकती है।उदाहरण के लिए यहाँ ओएस एक्स पर मेरी .tmux.conf का एक अंश (टिप्पणी में कुछ निर्देश के साथ):

# To use pbcopy and pbpaste on OS X, get this wrapper and install 
# git clone https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard.git 
# cd tmux-MacOSX-pasteboard/ 
# make reattach-to-user-namespace 
# mv reattach-to-user-namespace /usr/local/bin 
# After installing, the default command can be reset to use the 'reattach-to-user-namespace' 
# wrapper that was compiled/installed as descripted above. 
set -g default-command "reattach-to-user-namespace -l /bin/bash" 
# #Next, create Ctrl-c and Ctrl-v mappings 
bind C-c run "tmux save-buffer - | reattach-to-user-namespace pbcopy" 
bind C-v run "tmux set-buffer $(reattach-to-user-namespace pbpaste); tmux paste-buffer" 
48

यहाँ है क्या vim में मेरे लिए काम करता/tmux/OSX:

  1. स्थापित Homebrew
  2. set clipboard=unnamed
  3. बताएँ tmux प्रणाली का उपयोग करने: brew install reattach-to-user-namespace
  4. .vimrc में
  5. : पुनः अनुलग्न करने के लिए उपयोगकर्ता के नाम स्थान स्थापित करें क्लिपबोर्ड: .tmux.conf में: set-option -g default-command "reattach-to-user-namespace -l bash"

स्रोत: https://coderwall.com/p/j9wnfw

+2

ध्यान दें कि [लिंक-केवल उत्तर निराश हैं] (http://meta.stackoverflow.com/tags/link-only-answers/info), SO उत्तर समाधान के लिए खोज का अंत बिंदु होना चाहिए (बनाम। फिर भी संदर्भों का एक और स्टॉपओवर, जो समय के साथ पुराना हो जाता है)। लिंक को संदर्भ के रूप में रखते हुए, यहां स्टैंड-अलोन सारांश जोड़ना पर विचार करें। 'Zsh' प्रयोक्ताओं के लिए – kleopatra

+6

पाठ्यक्रम के साथ' bash' को 'zsh'' से प्रतिस्थापित करता है। – nikola

+0

ऐसा करने के बाद किसी भी लॉगिन सत्र को पुनरारंभ करना याद रखें (यानी अपने आईटर्म/टर्मिनल विंडोज़ को पुनरारंभ करें)। – Momer

0

देर जवाब है, लेकिन यह भी हो सकता है कि आपके .tmux.conf निम्न पंक्ति में शामिल हैं:

set -g set-clipboard off

के साथ संयुक्त .vimrc युक्त

set clipboard=unnamed

इससे विम एक क्लिपबोर्ड का उपयोग करने की कोशिश कर रहा है जो वहां नहीं है।

संबंधित मुद्दे