Tmux कॉन्‍फ़िगर का रिलोड नहीं कीबाइंडिंग कीज़ (बाइंड-की संचयी है)


33

मैं अलग-अलग tmux कीबाइंडिंग सेटिंग्स के साथ प्रयोग कर रहा हूं और मैंने निम्नलिखित पर ध्यान दिया है:

अगर मैं अपने tmux config (tmux के भीतर से) को पुनः लोड करता हूँ, तो मैंने जो एक बार लोड किया था, वह कीबाइंडिंग लोड रहेगा। इसे साफ करने का एकमात्र तरीका (मुझे पता है) सभी tmux सत्रों को छोड़ना और पुनः आरंभ करना है। तो ऐसा लगता है कि tmux सभी पहले से लोड कीबाइंडिंग को याद करता है और केवल उन्हें एक नए सिरे से या स्पष्ट रूप से unbinding द्वारा हटा देगा।

इसे पुनः बनाने के लिए:

  • एक टर्मिनल खोलें (A)
  • tmux शुरू करें
  • जांचें कि क्या कीबाइंडिंग एक घड़ी दिखाता है (प्रेस PREFIX C-t)
  • PREFIX ?सूची में कीबाइंडिंग देखने के लिए दबाएँ
  • संपादित करें ~/.tmux.conf
  • एक कीबाइंडिंग जोड़ें ( bind C-t display "Keybinding C-t")
  • पुनः लोड tmux config ( PREFIX : source-file ~/.tmux.conf)
  • जांचें कि क्या कीबाइंडिंग काम करता है (प्रेस PREFIX C-t)
  • PREFIX ?सूची में नई कीबाइंडिंग देखने के लिए दबाएँ
  • ~/.tmux.confफिर से संपादित करें
  • कीबाइंडिंग को हटा दें (ताकि निकालें bind C-t display "Keybinding C-t")
  • पुनः लोड tmux config ( PREFIX : source-file ~/.tmux.conf)
  • जांचें कि क्या कीबाइंडिंग काम करता है (प्रेस PREFIX C-t), यह अभी भी " कीबाइंडिंग सीटी" प्रदर्शित करता है
  • PREFIX ?यह देखने के लिए दबाएं कि नई कीबाइंडिंग अभी भी सूची में है
  • बाहर निकलें tmux
  • tmux दर्ज करें
  • जांचें कि क्या मूल कीबाइंडिंग फिर से काम करता है (प्रेस PREFIX C-t), इसे अब फिर से एक घड़ी प्रदर्शित करनी चाहिए
  • प्रेस PREFIX ?को देखने के लिए कि नई कुंजी बाइंडिंग सूची से हटा दिया गया है

मेरा प्रश्न: क्या tmux को निर्देश दिया गया है कि सभी भरे हुए विन्यासों को "भूल जाएँ" और फिर लोड करें .tmux.conf?

जवाबों:


19

tmux(1)मैन पेज के अनुसार , unbind-key -aवह है जिसे आप ढूंढ रहे हैं।

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

उस ने कहा, unbind-key -aअपनी कॉन्फ़िगरेशन फ़ाइल के शीर्ष पर रखें, और कॉन्फ़िगरेशन पुनः लोड करने पर यह वही करना चाहिए जो आप चाहते हैं - सब कुछ अनबाइंड करें और खरोंच से बाध्यकारी करना शुरू करें। या - यदि आपके संशोधन छोटे हैं - केवल वही बदलिए जो आप बदलना चाहते हैं।


हां और मैंने कहा है कि मेरे प्रश्न में पहले से ही है। लेकिन "रीसेट" करने के बजाय सभी संभवतया बाइंड की गई चाबियों को मैन्युअल रूप से मैं "क्लीन स्लेट" के साथ पुनः आरंभ करना चाहूंगा और फिर कॉन्फिग फाइल को फिर से लोड करूंगा।
नील्स बम

@NielsBom अपडेट किए गए उत्तर की जांच करें
peterph

आप सही हैं, unbind-key -aसभी कीबाइंडिंग को हटा देता है। मैं आपके उत्तर को सही मानूंगा, लेकिन अन्य दर्शकों की खातिर मैं उस "हैक" को जोड़ दूंगा जिसके साथ मैंने एक समस्या को ठीक करने के लिए आवेदन किया है unbind-key -a
नील्स बॉम्ब

मेरे समाधान के लिए मेरा जवाब देखें।
नील्स

16

पीटर द्वारा सही समाधान

तो @peterph ने सही उत्तर दिया जो unbind-key -aनिम्नलिखित है: (आदमी tmux)

यदि -a मौजूद है, तो सभी कुंजी बाइंडिंग निकाल दिए जाते हैं।

एक व्यावहारिक समाधान

समस्या (मेरे लिए) यह है कि "सभी" वास्तव में सभी का मतलब है। कीबाइंडिंग tmux सहित आता है । यदि आप unbind-key -aकमांड tmux को तुरंत निष्पादित करते हैं, तो आपके पास अब कोई भी कीबाइंडिंग नहीं है, इसलिए आप कमांड मोड में प्रवेश नहीं कर सकते हैं या मूल रूप से कुछ भी नहीं कर सकते हैं।

इसके लिए मेरा (बल्कि बदसूरत) फ़िक्स निम्नलिखित है:

  • वह बनाएँ .tmux.reset.confजो सभी कीबाइंडिंग को हटाता है और फिर डिफ़ॉल्ट रूप से सभी tmux को रीबाइंड करता है
  • स्रोत जो आपके सबसे ऊपर रीसेट हो .tmux.conf

मेरा .tmux.conf:

# always load the reset file first
source-file ~/.tmux.reset.conf

मेरा .tmux.reset.conf:

# First remove *all* keybindings
unbind-key -a
# Now reinsert all the regular tmux keys
bind-key C-b send-prefix
bind-key C-o rotate-window
bind-key C-z suspend-client
bind-key Space next-layout
bind-key ! break-pane
bind-key " split-window
bind-key # list-buffers
bind-key $ command-prompt -I #S "rename-session '%%'"
bind-key % split-window -h
bind-key & confirm-before -p "kill-window #W? (y/n)" kill-window
bind-key ' command-prompt -p index "select-window -t ':%%'"
bind-key ( switch-client -p
bind-key ) switch-client -n
bind-key , command-prompt -I #W "rename-window '%%'"
bind-key - delete-buffer
bind-key . command-prompt "move-window -t '%%'"
bind-key 0 select-window -t :0
bind-key 1 select-window -t :1
bind-key 2 select-window -t :2
bind-key 3 select-window -t :3
bind-key 4 select-window -t :4
bind-key 5 select-window -t :5
bind-key 6 select-window -t :6
bind-key 7 select-window -t :7
bind-key 8 select-window -t :8
bind-key 9 select-window -t :9
bind-key : command-prompt
bind-key ; last-pane
bind-key = choose-buffer
bind-key ? list-keys
bind-key D choose-client
bind-key L switch-client -l
bind-key [ copy-mode
bind-key ] paste-buffer
bind-key c new-window
bind-key d detach-client
bind-key f command-prompt "find-window '%%'"
bind-key i display-message
bind-key l last-window
bind-key n next-window
bind-key o select-pane -t :.+
bind-key p previous-window
bind-key q display-panes
bind-key r refresh-client
bind-key s choose-session
bind-key t clock-mode
bind-key w choose-window
bind-key x confirm-before -p "kill-pane #P? (y/n)" kill-pane
bind-key { swap-pane -U
bind-key } swap-pane -D
bind-key ~ show-messages
bind-key PPage copy-mode -u
bind-key -r Up select-pane -U
bind-key -r Down select-pane -D
bind-key -r Left select-pane -L
bind-key -r Right select-pane -R
bind-key -r M-1 select-layout even-horizontal
bind-key -r M-2 select-layout even-vertical
bind-key -r M-3 select-layout main-horizontal
bind-key -r M-4 select-layout main-vertical
bind-key -r M-5 select-layout tiled
bind-key -r M-n next-window -a
bind-key -r M-o rotate-window -D
bind-key -r M-p previous-window -a
bind-key -r M-Up resize-pane -U 5
bind-key -r M-Down resize-pane -D 5
bind-key -r M-Left resize-pane -L 5
bind-key -r M-Right resize-pane -R 5
bind-key -r C-Up resize-pane -U
bind-key -r C-Down resize-pane -D
bind-key -r C-Left resize-pane -L
bind-key -r C-Right resize-pane -R

ऐसा लगता है कि इस तरह से tmux की-टेबल (जहाँ तक मैं बता सकता हूँ) के साथ काम कर सकता था, लेकिन आप नई की-टेबल नहीं जोड़ सकते।


1
ऐसा नहीं है कि आप जल्दी से अपने के बराबर उत्पन्न कर सकते हैं की संभावना है .tmux.reset.confचलाकर tmux list-keysएक "क्लीन" सत्र में।
jw013

2
tmux -f /dev/null -L temp start-server \; list-keysप्रभावी रूप से चूक उत्पन्न करेगा (हालांकि आपको इसके बंधन में अर्धविराम से पहले एक बैकस्लैश जोड़ने की आवश्यकता है)।
क्रिस जॉन्सन

@ChrisJohnsen क्या आप pls एक अलग उत्तर में स्टार्ट-सर्वर पर विस्तृत कर सकते हैं?
नील्स बम

7

वर्तमान में कुंजी के बाइंडिंग को उसके डिफ़ॉल्ट पर रीसेट करने का कोई सीधा तरीका नहीं है; डिफ़ॉल्ट बाइंडिंग (इन key_bindings_init()) की आरंभीकरण एक बार तब किया जाता है जब tmux सर्वर पहली बार (में server_start()) शुरू होता है , और एक कुंजी को रीसेट करने के लिए कोई तंत्र नहीं होता है।

अपने वांछित परिदृश्य जहाँ आप अपने विन्यास फाइल सोर्सिंग एक डिफ़ॉल्ट रूप से बाध्यकारी है कि पहले एक कस्टम बाध्यकारी है कि के बाद से अपने विन्यास फाइल से हटा दिया गया है द्वारा ओवरराइड होने के पैर जमाने के के कार्य लिए, विधि आप तैयार उचित है (हालांकि दुर्भाग्य से शब्द): unbind-key -a, फिर सभी "डिफ़ॉल्ट" बाइंडिंग को फिर से स्थापित करें, फिर अपने कस्टम बाइंडिंग स्थापित करें (जिनमें से कुछ "डिफ़ॉल्ट" बाइंडिंग को ओवरराइड कर सकते हैं)।

एक सर्वर के वर्तमान बाइंडिंग को list-keysकमांड * के साथ निकाला जा सकता है ; यह आपकी प्रस्तावित .tmux.reset.confफ़ाइल को उत्पन्न / बनाए रखने में मदद कर सकता है , लेकिन आपको डिफ़ॉल्ट बाइंडिंग को निकालने का एक तरीका चाहिए , न कि वर्तमान बाइंडिंग।

* कुछ ऐसी स्थितियाँ हैं, जिनका उत्पादन list-keysवर्तमान में सीधे प्रयोग करने योग्य नहीं है: अर्धविराम के लिए बाध्य होने के कारण अर्धविराम की आवश्यकता होती है, ताकि इसे टक्सू कमांड विभाजक के रूप में व्याख्या करने से रोका जा सके , और ऐसे तर्क जो एकल के भीतर दोहरे उद्धरणों का उपयोग करते हैं उद्धरण (डिफ़ॉल्ट बाइंडिंग में से कोई भी ऐसा नहीं है) दोहरे qoutes के अंदर दोहरे उद्धरणों के रूप में सामने आएगा ।

डिफ़ॉल्ट बाइंडिंग प्राप्त करने के लिए आपको न्यूनतम कॉन्फ़िगरेशन (यानी कोई कस्टम बाइंडिंग) के साथ एक अस्थायी सर्वर की आवश्यकता होती है ताकि आप इसके list-keysआउटपुट को कैप्चर कर सकें । आपके द्वारा चलाए जा रहे tmux सर्वर की संख्या की कोई सीमा नहीं है , लेकिन प्रत्येक को एक अलग सॉकेट पाथनाम का उपयोग करना चाहिए; -Lऔर -S tmux विकल्पों सॉकेट नाम (में निर्दिष्ट करने के लिए इस्तेमाल किया जा सकता $TMPDIR/tmux-$UIDहै (या शुरू करने या पूर्ण सॉकेट पथ नाम तो, करने के लिए बात करने के लिए) एक सॉकेट पर एक नए सर्वर नाम दिया है। tempआप इस का प्रयोग करेंगे:

tmux -L temp …

यह सुनिश्चित करने के लिए कि यह आपका उपयोग नहीं करता है .tmux.conf, आप -fइसे पढ़ने के लिए बताने के लिए उपयोग करते हैं /dev/null(एक विशेष फ़ाइल जो हमेशा खाली होती है):

tmux -f /dev/null -L temp …

नोट : यह प्रसंस्करण को रोकता नहीं है /etc/tmux.conf, अगर ऐसी कोई फ़ाइल मौजूद है; इस "सिस्टम कॉन्फ़िगरेशन फ़ाइल" का पथ हार्ड-कोडेड है और इसे बायपास करने का कोई विकल्प नहीं है (कोड को पैच करना)।

आम तौर पर, आपको new-sessionवास्तव में सर्वर को शुरू करने के लिए एक कमांड की आवश्यकता होती है , लेकिन हमें कोई सत्र नहीं चाहिए, बस एक प्रारंभिक सर्वर को क्वेरी करना चाहिए। start-serverआदेश करता है सिर्फ इतना है कि: किसी भी सत्र बनाने के बिना एक सर्वर शुरू होता है।

tmux -f /dev/null -L temp start-server …

अब, हमें बस अपनी "क्वेरी" कमांड ( list-keysइस मामले में) को संलग्न करने की आवश्यकता है :

tmux -f /dev/null -L temp start-server \; list-keys

ध्यान दें : शेल को शेल कमांड सेपरेटर के रूप में ट्रीट करने से रोकने के लिए सेमीकॉलन को भाग जाने या उद्धृत करने की आवश्यकता है क्योंकि हम चाहते हैं कि यह एक टक्सू कमांड सेपरेटर हो।

चूंकि बनाए रखने के लिए कोई सत्र नहीं हैं, list-keysकमांड खत्म होने के बाद सर्वर स्वचालित रूप से बाहर निकल जाएगा ।

इसलिए, आप इस तरह से एक कमांड का उपयोग कर सकते हैं ताकि आप .tmux.reset.confअपने .tmux.confफ़ाइल को अस्थायी रूप से हटाने के बारे में चिंता किए बिना (बस आपको डिफ़ॉल्ट बाइंडिंग देख सकें) और किसी भी मौजूदा सर्वर को बंद किए बिना।


यदि run-shellकमांड सिंक्रोनस था, तो आप अपनी कॉन्फ़िगरेशन फ़ाइल में इस तरह की कॉल को एम्बेड कर सकते हैं (एक अस्थायी फ़ाइल पर कब्जा करना जो तब आप के साथ प्रक्रिया करेंगे source-file) एक स्थैतिक फ़ाइल (आपके .tmux.reset.conf) होने के बजाय । यह आपको हमेशा tmux के अपने वर्तमान संस्करण से डिफ़ॉल्ट बाइंडिंग का उपयोग करने देगा (डिफ़ॉल्ट बाइंडिंग कभी-कभी बदल जाती है)। काश, run-shellकमांड का पूरा होना वर्तमान में बाद के आदेशों के संबंध में अतुल्यकालिक है (कमांड के बाद आने वाली run-shellकमांड आमतौर पर प्रक्रिया से पहले चलेगी जिसके द्वारा run-shellसमाप्त करने का मौका मिला है)।


6

यहां अन्य सभी उत्तरों का एक बश स्क्रिप्ट में रोलअप किया गया है .tmux.reset.conf, जो डिफ़ॉल्ट कुंजी बाइंडिंग से स्वचालित रूप से उत्पन्न होगा :

#!/bin/bash
tmux -f /dev/null -L temp start-server \; list-keys | \
  sed -r \
  -e "s/bind-key(\s+)([\"#~\$])(\s+)/bind-key\1\'\2\'\3/g" \
  -e "s/bind-key(\s+)([\'])(\s+)/bind-key\1\"\2\"\3/g" \
  -e "s/bind-key(\s+)([;])(\s+)/bind-key\1\\\\\2\3/g" \
  -e "s/command-prompt -I #([SW])/command-prompt -I \"#\1\"/g" \
  > ~/.tmux.reset.conf

एम्बेडेड sedकमांड लाइन आउटपुट के विभिन्न हिस्सों से बचने का ख्याल रखती है list-keys। यह आपके सिस्टम की बारीकियों के लिए कुछ tweaking की आवश्यकता हो सकती है।

अपनी .tmux.confफ़ाइल में बस अपनी कुंजी बाइंडिंग को परिभाषित करने से पहले सभी कुंजी और स्रोत को अनबाइंड करें:

unbind-key -a
source-file ~/.tmux.reset.conf

4

कृपया अन्य उत्तरों को भी यहाँ देखें, क्योंकि वे स्थिति को समझाने का अच्छा काम करते हैं। मेरे पास यहाँ मेरा tmux 1.8 कम्पेटिबल tmux.reset.conf है, जिसे tmux -f /dev/null -L temp start-server \; list-keysआउटपुट को कॉपी करने के बाद मुझे कई संशोधन करने पड़े । विशेष रूप से, कई चीजों को उद्धृत किया जाना था।

# First remove *all* keybindings
unbind-key -a
# Now reinsert all the regular tmux keys
bind-key C-b send-prefix
bind-key C-o rotate-window
bind-key C-z suspend-client
bind-key Space next-layout
bind-key ! break-pane
bind-key '"' split-window
bind-key '#' list-buffers
bind-key '$' command-prompt -I "#S" "rename-session '%%'"
bind-key % split-window -h
bind-key & confirm-before -p "kill-window #W? (y/n)" kill-window
bind-key "'" command-prompt -p index "select-window -t ':%%'"
bind-key ( switch-client -p
bind-key ) switch-client -n
bind-key , command-prompt -I "#W" "rename-window '%%'"
bind-key - delete-buffer
bind-key . command-prompt "move-window -t '%%'"
bind-key 0 select-window -t :0
bind-key 1 select-window -t :1
bind-key 2 select-window -t :2
bind-key 3 select-window -t :3
bind-key 4 select-window -t :4
bind-key 5 select-window -t :5
bind-key 6 select-window -t :6
bind-key 7 select-window -t :7
bind-key 8 select-window -t :8
bind-key 9 select-window -t :9
bind-key : command-prompt
bind-key \; last-pane
bind-key = choose-buffer
bind-key ? list-keys
bind-key D choose-client
bind-key L switch-client -l
bind-key [ copy-mode
bind-key ] paste-buffer
bind-key c new-window
bind-key d detach-client
bind-key f command-prompt "find-window '%%'"
bind-key i display-message
bind-key l last-window
bind-key n next-window
bind-key o select-pane -t :.+
bind-key p previous-window
bind-key q display-panes
bind-key r refresh-client
bind-key s choose-tree
bind-key t clock-mode
bind-key w choose-window
bind-key x confirm-before -p "kill-pane #P? (y/n)" kill-pane
bind-key z resize-pane -Z
bind-key { swap-pane -U
bind-key } swap-pane -D
bind-key '~' show-messages
bind-key PPage copy-mode -u
bind-key -r Up select-pane -U
bind-key -r Down select-pane -D
bind-key -r Left select-pane -L
bind-key -r Right select-pane -R
bind-key M-1 select-layout even-horizontal
bind-key M-2 select-layout even-vertical
bind-key M-3 select-layout main-horizontal
bind-key M-4 select-layout main-vertical
bind-key M-5 select-layout tiled
bind-key M-n next-window -a
bind-key M-o rotate-window -D
bind-key M-p previous-window -a
bind-key -r M-Up resize-pane -U 5
bind-key -r M-Down resize-pane -D 5
bind-key -r M-Left resize-pane -L 5
bind-key -r M-Right resize-pane -R 5
bind-key -r C-Up resize-pane -U
bind-key -r C-Down resize-pane -D
bind-key -r C-Left resize-pane -L
bind-key -r C-Right resize-pane -R

4

मैंने ऊपर से पूछा कि वे इसे ठीक करने के लिए तैयार नहीं हैं (जब तक कि कोई पीआर को प्रस्तुत नहीं करता है)।

यहाँ मेरा मैन्युअल रूप से बच गया है tmux list-keys, के साथ एक नया सर्वर उदाहरण के माध्यम से प्राप्त किया

tmux -f /dev/null -L temp start-server \; list-keys

(पिछले उत्तरों के लिए धन्यवाद)

## See https://github.com/tmux/tmux/issues/729: How to reset key bindings to default? #729

bind-key    -T prefix C-b              send-prefix
bind-key    -T prefix C-o              rotate-window
bind-key    -T prefix C-z              suspend-client
bind-key    -T prefix Space            next-layout
bind-key    -T prefix !                break-pane
bind-key    -T prefix '"'                split-window
bind-key    -T prefix '#'                list-buffers
bind-key    -T prefix '$'                command-prompt -I '#'S "rename-session '%%'"
bind-key    -T prefix %                split-window -h
bind-key    -T prefix &                confirm-before -p "kill-window #W? (y/n)" kill-window
bind-key    -T prefix "'"                command-prompt -p index "select-window -t ':%%'"
bind-key    -T prefix (                switch-client -p
bind-key    -T prefix )                switch-client -n
bind-key    -T prefix ,                command-prompt -I '#W' "rename-window '%%'"
bind-key    -T prefix -                delete-buffer
bind-key    -T prefix .                command-prompt "move-window -t '%%'"
bind-key    -T prefix 0                select-window -t :=0
bind-key    -T prefix 1                select-window -t :=1
bind-key    -T prefix 2                select-window -t :=2
bind-key    -T prefix 3                select-window -t :=3
bind-key    -T prefix 4                select-window -t :=4
bind-key    -T prefix 5                select-window -t :=5
bind-key    -T prefix 6                select-window -t :=6
bind-key    -T prefix 7                select-window -t :=7
bind-key    -T prefix 8                select-window -t :=8
bind-key    -T prefix 9                select-window -t :=9
bind-key    -T prefix ':'                command-prompt
bind-key    -T prefix \;                last-pane
bind-key    -T prefix =                choose-buffer
bind-key    -T prefix ?                list-keys
bind-key    -T prefix D                choose-client
bind-key    -T prefix L                switch-client -l
bind-key    -T prefix M                select-pane -M
bind-key    -T prefix [                copy-mode
bind-key    -T prefix ]                paste-buffer
bind-key    -T prefix c                new-window
bind-key    -T prefix d                detach-client
bind-key    -T prefix f                command-prompt "find-window '%%'"
bind-key    -T prefix i                display-message
bind-key    -T prefix l                last-window
bind-key    -T prefix m                select-pane -m
bind-key    -T prefix n                next-window
bind-key    -T prefix o                select-pane -t :.+
bind-key    -T prefix p                previous-window
bind-key    -T prefix q                display-panes
bind-key    -T prefix r                refresh-client
bind-key    -T prefix s                choose-tree
bind-key    -T prefix t                clock-mode
bind-key    -T prefix w                choose-window
bind-key    -T prefix x                confirm-before -p "kill-pane #P? (y/n)" kill-pane
bind-key    -T prefix z                resize-pane -Z
bind-key    -T prefix {                swap-pane -U
bind-key    -T prefix }                swap-pane -D
bind-key    -T prefix '~'                show-messages
bind-key    -T prefix PPage            copy-mode -u
bind-key -r -T prefix Up               select-pane -U
bind-key -r -T prefix Down             select-pane -D
bind-key -r -T prefix Left             select-pane -L
bind-key -r -T prefix Right            select-pane -R
bind-key    -T prefix M-1              select-layout even-horizontal
bind-key    -T prefix M-2              select-layout even-vertical
bind-key    -T prefix M-3              select-layout main-horizontal
bind-key    -T prefix M-4              select-layout main-vertical
bind-key    -T prefix M-5              select-layout tiled
bind-key    -T prefix M-n              next-window -a
bind-key    -T prefix M-o              rotate-window -D
bind-key    -T prefix M-p              previous-window -a
bind-key -r -T prefix M-Up             resize-pane -U 5
bind-key -r -T prefix M-Down           resize-pane -D 5
bind-key -r -T prefix M-Left           resize-pane -L 5
bind-key -r -T prefix M-Right          resize-pane -R 5
bind-key -r -T prefix C-Up             resize-pane -U
bind-key -r -T prefix C-Down           resize-pane -D
bind-key -r -T prefix C-Left           resize-pane -L
bind-key -r -T prefix C-Right          resize-pane -R
bind-key    -T root   MouseDown1Pane   select-pane -t = \; send-keys -M
bind-key    -T root   MouseDown1Status select-window -t =
bind-key    -T root   MouseDown3Pane   if-shell -F -t = '#{mouse_any_flag}' "select-pane -t=; send-keys -M" "select-pane -mt="
# Someone also was wondering how to fix here: http://tmux-users.narkive.com/dTFVvLMh/is-it-possible-to-have-a-binding-that-brings-back-mouse-behavior
bind-key    -T root   MouseDrag1Pane   if-shell -F -t = '#{mouse_any_flag}' "if -Ft= '#{pane_in_mode}' 'copy-mode -M' 'send-keys -M' " "copy-mode -M"

bind-key    -T root   MouseDrag1Border resize-pane -M
bind-key    -T root   WheelUpPane      if-shell -F -t = '#{mouse_any_flag}' "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -et=' "
bind-key    -T root   WheelUpStatus    previous-window
bind-key    -T root   WheelDownStatus  next-window

उपरोक्त गितुब पर है ताकि आप कर सकें:

curl -L https://raw.githubusercontent.com/timotheecour/dinocode/master/tmux_list_keys_escaped.txt > ~/.tmux.reset.conf
unbind-key -a
source-file ~/.tmux.reset.conf

नोट: किसी तरह रिचर्ड कुक का जवाब अभी भी बचने के मुद्दों का उत्पादन किया।


Unix.SE में आपका स्वागत है! हम अक्सर सादे लिंक से सावधान रहते हैं इसलिए मैंने इसे सीधे यहाँ पेस्ट किया (लेकिन संदर्भ के लिए लिंक रखा)। वह इधर-उधर का पसंदीदा तरीका है। लिंक मरते हैं (मुझे पता है, यह जीथब है! लेकिन फिर भी यह किसी बिंदु पर मर सकता है)। किसी भी तरह यह एक अच्छा जवाब है (+1)। शायद बेहतर हो सकता है अगर आप रिचर्ड के सेड कोड के साथ समस्या को ठीक करने में कामयाब रहे। यह एक वर्ष पुराना है और tmux में 100% पिछड़े संगत नहीं होने की बुरी आदत है।
grochmal

2

यहाँ पर tmux 2.1 पर भागने के मुद्दों को ठीक करने के लिए रिचर्ड कुक के जवाब का एक ट्वीक संस्करण है

#!/bin/bash
tmux -f /dev/null -L temp start-server \; list-keys | \
    sed -r \
    -e "s/(bind-key.*\s+)([\"#~\$])(\s+)/\1\'\2\'\3/g" \
    -e "s/(bind-key.*\s+)([\'])(\s+)/\1\"\2\"\3/g" \
    -e "s/(bind-key.*\s+)([;])(\s+)/\1\\\\\2\3/g" \
    -e "s/(command-prompt -I )#([SW])/\1\"#\2\"/g" \
    -e "s/(if-shell -F -t = )#([^ ]+)/\1\"#\2\"/g" \
    > ~/.tmux.reset.conf                              

शुरुआत करने के लिए निम्नलिखित पंक्तियों को जोड़ें .tmux.conf

unbind-key -a
source-file ~/.tmux.reset.conf
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.