मैं एक फ़ाइल में tmux सत्र में सभी स्क्रॉलबैक कैसे लिख सकता हूं?
capture-panel
वर्तमान स्क्रीन को पकड़ सकता है, लेकिन संपूर्ण स्क्रॉलबैक को नहीं।
मैं एक फ़ाइल में tmux सत्र में सभी स्क्रॉलबैक कैसे लिख सकता हूं?
capture-panel
वर्तमान स्क्रीन को पकड़ सकता है, लेकिन संपूर्ण स्क्रॉलबैक को नहीं।
जवाबों:
यह उस मूल्य पर निर्भर करता है history-limit
जिसे आपने अपने में सेट किया है .tmux.conf
- डिफ़ॉल्ट 2000 है; यदि आप अधिक कैप्चर करना चाहते हैं, तो आपको स्पष्ट रूप से लाइनों की संख्या निर्धारित करनी होगी।
संपूर्ण स्क्रॉलबैक कैप्चर करने के लिए, कॉपी मोड दर्ज करें, पूरे स्क्रॉलबैक का चयन करें, और इसे बफर में जमा करें, फिर इसे अपनी फ़ाइल में पेस्ट करें।
आप इसे कैसे पूरा करेंगे यह mode-keys
आपके द्वारा पसंद किए गए विकल्प पर निर्भर करेगा , vi या emacs। man tmux
संबंधित कुंजियों का वर्णन करने में एक सहायक तालिका है।
.tmux.conf
इसे सरल बनाने के लिए मेरे पास निम्नलिखित हैं :
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
पूर्ण स्क्रॉलबैक कैप्चर करने की प्रक्रिया तब है:
PrefixEsc : कॉपी मोड में प्रवेश करने के लिए
v : दृश्य चयन शुरू करने के लिए (आप स्क्रीन के नीचे पहले से ही हैं)
gg : स्क्रॉलबैक में सब कुछ कैप्चर करने के लिए
y : इसे बफर में डालना
Prefixc : एक और tmux विंडो खोलें
vim scrollback.txt
i : vim में इन्सर्ट मोड डालें
Prefixp : फाइल में पेस्ट करें
यहाँ एक उत्तर यह भी है कि इसका उपयोग करने वाली अस्थायी फ़ाइल में बफर को कॉपीxsel
करने का वर्णन कैसे उपयोगी हो सकता है।
:set paste
विम का उपयोग करते हैं , तो विम स्वचालित इंडेंटेशन या किसी भी सम्मिलित-आधारित कीबाइंडिंग को जोड़ने पर ध्यान नहीं देगा।
.tmux.conf
...
एक सरल उत्तर की तलाश करने वालों के लिए, बस prefix+ का उपयोग करें :, फिर capture-pane -S -3000
+ में टाइप करें return( 3000
हालांकि कई पंक्तियों को आप सहेजना चाहेंगे।) यह उन पंक्तियों को एक बफर में कॉपी करता है।
फिर, बफर को एक फ़ाइल में सहेजने के लिए, बस prefix+ :फिर से उपयोग करें, और save-buffer filename.txt
+ में टाइप करें, जो भी आप चाहते हैं उसके साथ returnप्रतिस्थापित filename
करें।
(डिफ़ॉल्ट रूप से prefixहै ctrl + b।)
save-buffer filename.txt
/
में pwd
(वर्तमान निर्देशिका) में नहीं, फ़ाइल को बचाने के लिए लगता है । इसके बजाय, मैंने एक पूर्ण फ़ाइल पथ प्रदान किया और इसने एक आकर्षण की तरह काम किया
Tmux 1.5 के साथ , capture-pane
कमांड स्वीकार करता है -S
और -E
कैप्चर की शुरुआत और अंत लाइनें निर्दिष्ट करता है ; इतिहास से लाइनें निर्दिष्ट करने के लिए नकारात्मक मानों का उपयोग किया जा सकता है। एक बार जब आपके पास एक बफर में डेटा होता है, तो आप इसे सहेज सकते हैं save-buffer
।
एक उदाहरण बाइंडिंग (इसके लिए उपयुक्त .tmux.conf
) है जो इसे फ़ाइल नाम के लिए प्रांप्ट करता है:
bind-key P command-prompt -p 'save history to filename:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'
यह इतिहास के 32768 लाइनों के साथ-साथ वर्तमान में प्रदर्शित लाइनों को पकड़ता है। के साथ शुरू tmux 1.6, आप INT_MIN करने के लिए नीचे नंबरों का उपयोग कर सकते हैं यदि आपके फलक एक इतिहास है कि 32Ki लाइनों (आमतौर पर 2Gi लाइनों तक) की तुलना में गहरी है। Tmux 2.0 में शुरू , आप capture-pane -S -
"इतिहास की शुरुआत में शुरू" (यानी कोई बड़ी, हार्ड-कोडेड नकारात्मक संख्या) का मतलब करने के लिए उपयोग कर सकते हैं ।
नोट: सहेजी गई फ़ाइल में पंक्तियों की संख्या हमेशा फलक की इतिहास सीमा और उसकी ऊँचाई के बराबर नहीं होगी।
जब एक फलक का इतिहास बफ़र भरा होता है, तो tmux केवल एक लाइन को छोड़ने के बजाय सबसे पुरानी 10% लाइनों को छोड़ देता है। इसका मतलब है कि फलक की प्रभावी इतिहास गहराई कभी-कभी इसकी कॉन्फ़िगर सीमा के 90% तक कम होगी।
tmux server-info | head -1
अपने संस्करण को देखने के लिए उपयोग कर सकते हैं। tmux -V
tmux में काम करता है * 1.4 और बाद में।
[PrefixKey] :
tmux कमांड लाइन में जाने के लिए बस पुनः आरंभ नहीं करना चाहते हैं , और फिर पूरी लाइन को पेस्ट करते हैं, तो आप बस [Prefix] P
इसे कैपिटल P करते हैं और आप जा सकते हैं।
मेरे पास मानक कुंजी बाइंडिंग थी जो @ jasonwryan के उत्तर की तुलना में थोड़ी भिन्न दिखाई देती थी और कॉन्फ़िगरेशन में कुछ भी नहीं बदलती थी।
नीचे नुस्खा है कि मेरे लिए काम किया है। हो सकता है कि आपको यह उपयोगी लगे अगर आप tmux config में कोई बदलाव नहीं करना चाहते हैं और बस जल्दी से कुछ स्क्रॉलबैक कॉपी करना चाहते हैं।
Prefix== Ctrl+bमेरे tmux (tmux 1.6, debian 7) में।
यदि आप कुछ चाहते हैं तो आप कमांड लाइन से भाग सकते हैं (अपनी tmux उपसर्ग कुंजियों का उपयोग करने के बजाय), चलाने का प्रयास करें:
tmux capture-pane -pS -1000000
यदि आप इसे चलाते हैं और यह कुछ भी नहीं करने के लिए लगता है, ऐसा इसलिए है क्योंकि यह बिल्कुल वही है जो आपकी स्क्रीन पर था, इसलिए यह समान दिखता है।
बेशक, आप इसे एक फ़ाइल में भी पाइप कर सकते हैं:
tmux capture-pane -pS -1000000 > file.out
tmux
मैन पेज देखें और capture-pane
उन अधिक चीजों की खोज करें, जो आप कर सकते हैं (जैसे रंग से बचना चाहते हैं, अगर आप नई लाइन में शामिल नहीं हैं, तो निर्दिष्ट करें कि क्या आप कई विजुअल लाइनों को जोड़ना चाहते हैं या शामिल होना चाहते हैं)
यहाँ एक tmux प्लगइन है जो इसे सक्षम करता है:
https://github.com/tmux-plugins/tmux-logging
इसे स्थापित करने के बाद, संपूर्ण स्क्रॉलबैक को इसके साथ सहेजें prefix + alt-shift-p
।
मैं एक फ़ाइल में tmux सत्र में सभी स्क्रॉलबैक कैसे लिख सकता हूं?
मैं इसका उपयोग अपने ~ / .tmux.conf में करता हूं , और अब जब मैं अपने रनिंग शेल से बाहर निकलता हूं, तो पेन आउटपुट अद्वितीय लॉग फ़ाइल में सहेजा जाता है:
set -g remain-on-exit
set-hook pane-died 'capture-pane -S - -E - ; save-buffer "$HOME/logs/tmux/tmux-saved.#{host_short}-#{session_id}:#{window_id}:#{pane_id}-#{pane_pid}-#{client_activity}.log"; delete-buffer; kill-pane'