2012-06-08 16 views
11

मुझे वीएम कमांड के साथ टीएमयूक्स और इसकी प्रतिलिपि मोड पसंद है, लेकिन मैं वास्तव में इस तथ्य से नाराज हूं कि यह मोड असली विम के रूप में उतना ही कुशल है।टीएमक्स कॉपी मोड: अपना खुद का आदेश कैसे बनाएं?

उदाहरण के लिए, एक शब्द (वाईडब्ल्यू) की प्रतिलिपि बनाने के लिए कोई कीबाइंडिंग नहीं है, मुझे हमेशा "एक शब्द की शुरुआत में जाना" "चयन शुरू करें", "शब्द के अंत में जाएं" फिर "चयन समाप्त करें" "। जब मैं सिर्फ vim में yw करने की जरूरत है तो बहुत सारे ऑपरेशन।

मैंने टीएमक्स कॉपी मोड में अपना "yw" कमांड बनाने का एक तरीका खोजा। आवश्यक सभी परिचालनों को चेन करना एक अच्छा विचार है, लेकिन ; से अलग आदेशों के साथ एक सरल बाध्य बस काम नहीं करता है (इसी तरह की चीज गैर-प्रतिलिपि मोड में काम करती है)। क्या मुझे कुछ याद आ रहा है? या टीएमयूक्स की कॉपी मोड बस सीमित है और स्क्रिप्ट योग्य नहीं है क्योंकि मुझे इसकी आवश्यकता है?

+0

आपने 'बाइंड-की' जैसी तरह क्या कहा? – chepner

+2

कुछ ऐसा: बाइंड-की-टी vi-copy एक्स पिछले शब्द \; प्रारंभ चयन \; अगला शब्द \; प्रतिलिपि – Jooj

उत्तर

4

मैं अपने tmux conf में यह है:

# vi-style controls in copy mode 
set-option -g status-keys vi 
set-window-option -g mode-keys vi 

# v and y like vi in copy-mode 
bind-key -t vi-copy 'v' begin-selection 
bind-key -t vi-copy 'y' copy-selection 

अब प्रतिलिपि मोड जा रहा मैं आसानी से शब्दों का चयन कर सकते बाद:

वीडब्ल्यू

और

साथ कॉपी

वाई

tmux में आपको कॉपी करने के लिए का चयन करें। सामान्य मोड में प्रतिलिपि बनाने की तरह कुछ भी नहीं है जैसा कि आप सामान्य vi/vim कमांड से जानते हैं। दुर्भाग्यवश आप प्रत्येक tmux तर्क के लिए केवल एक कुंजी (जैसे v या y) का उपयोग कर सकते हैं।

आप tmux के vi आंदोलन के बारे में अधिक प्राप्त कर सकते हैं यहाँ आदेश: https://superuser.com/a/197272/57890

+0

क्या बाध्य के साथ "टार्टेट" का उपयोग करने के लिए कोई अच्छी टीएमएक्स चाल है या क्या यह आपके पास स्थानीय रूप से कुछ है? – wonbyte

4

यह जब -t विकल्प के साथ कहा जाता है bind-key आदेश में एक बग प्रतीत होता है। मैंने https://sourceforge.net/tracker/?func=detail&aid=3533562&group_id=200378&atid=973262 पर एक बग रिपोर्ट दायर की है।

+1

ग्रेट, आपके उत्तर और आपकी बग रिपोर्ट के लिए धन्यवाद! – Jooj

0

वहाँ tmux प्रक्रियाओं बना सकते हैं और 'मोड' कीस्ट्रोक्स के लिए कार्यों के किसी भी संख्या के लिए बाध्य करने की अनुमति के लिए एक पैच है:, http://ershov.github.io/tmux/

2

नदी के ऊपर (2.4+) tmux संस्करण पर यह बदल गया आदेश शुरू करने के लिए एक बाइंडिंग बनाने के लिए चयन आपको -T और -X के साथ भेजने-कुंजी का उपयोग करने की आवश्यकता है।

tmux changelog में अधिक जानकारी।

यहाँ एक उदाहरण के रूप में vi प्रतिलिपि मोड के लिए मेरे बाइंडिंग:

# Bind `v` to trigger selection  
bind-key -T copy-mode-vi v send-keys -X begin-selection 

# Bind `y` to yank current selection 
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel 

# Rebind `mouse click + drag button release` to not jump away from context 
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection 

तो आप Emacs उपयोग कर रहे हैं प्रतिलिपि मोड, copy-mode-vicopy-mode साथ की जगह पर्याप्त होना चाहिए।

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