tmux - एक फलक में शिफ्ट + पेज अप / डाउन के साथ ऊपर / नीचे स्क्रॉल करें


14

मैं एक ही कीबाइंडिंग जो xterm करता है, यानी SHIFT + Page Up / Down के साथ दिए गए फलक में ऊपर / नीचे स्क्रॉल करने में सक्षम होना चाहता हूँ।

उदाहरण के लिए, अगर tmux विंडो को 2 ऊर्ध्वाधर पैन में विभाजित किया गया है, तो मैं कीबोर्ड के साथ दो में से एक पर स्क्रॉल कर सकता हूं जबकि दूसरा स्क्रॉल नहीं करता है।

क्या यह संभव है ?

यहाँ मेरा tmux.conf है:

set -g status off
set -g prefix C-o
unbind C-b
bind C-o send-prefix

# settings -------------------------------------------------------------

setw -g utf8 on
setw -g xterm-keys on
set -g default-terminal "screen-256color"

set-option -g set-titles on
set-option -g set-titles-string '[#S:#I #H] #W'

# auto-set window title
setw -g automatic-rename
setw -g aggressive-resize on

# vim keybinds
set-option -g status-keys vi
set-window-option -g mode-keys vi

# scroll inside the current pane
#bind-key k page-up
#bind-key l page-down

# mouse
set -g mode-mouse on
setw -g mouse-select-window on
setw -g mouse-select-pane on

# scrollback buffer n lines
set -g history-limit 100000

# fixes shift-pageup/shift-pagedown
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
set -g visual-activity on

# faster key repetition
set -s escape-time 0

# activity alert
setw -g monitor-activity on
set -g visual-activity on

# alt+directions navigates through panes
bind-key -n M-left select-pane -L
bind-key -n M-right select-pane -R
bind-key -n M-up select-pane -U
bind-key -n M-down select-pane -D

जवाबों:


8

स्क्रॉल करने के लिए आप यह कर सकते हैं:

bind -n S-Pageup copy-mode -u

उपरोक्त मैक पर काम नहीं करता है, इसलिए मैंने इसके साथ परीक्षण किया:

bind -n S-Up copy-mode -u

जहाँ तक मैं बता सकता हूँ, S-Up दबाने के बाद, आप स्क्रॉल करते रहने के लिए S-Up या सिर्फ पेज-अप का उपयोग करना जारी रख सकते हैं। नीचे स्क्रॉल करने के लिए आप पेज-डाउन का उपयोग कर सकते हैं। ये आपके द्वारा खोजे जा रहे कुंजी-बंधन नहीं हैं, इसलिए मैं क्षमा चाहता हूँ। इससे आपको अपने लक्ष्य के करीब पहुंचना चाहिए।

संपादित करें:

मैंने अभी-अभी इसके साथ परीक्षण किया है:

bind -n Pageup copy-mode -u

और यह आपको पेज-अप और पेज-डाउन का उपयोग करने की अनुमति देता है।


हालांकि bind -n Pageup copy-mode -uमुझे कॉपी-मोड में प्रवेश करने और स्क्रॉल करने के लिए PgUp दबाने की अनुमति है, फिर भी मैं स्क्रॉलिंग को बनाए रखने के लिए PgUp का उपयोग नहीं कर सकता।
एपोक्रिफ्लुथोर

6

हां मुझे पता है कि यह प्रश्न पुराना है, लेकिन यह Google परिणामों में बहुत नीचे नहीं है और मैंने यह पता लगाने के लिए बहुत समय बिताया है कि यह कैसे किया जाए क्योंकि लगभग किसी भी Google परिणाम में उत्तर नहीं था, केवल प्रश्न।

AFAIK केवल एक फलक स्क्रॉल करता है जब कॉपी मोड में होता है। प्रतिलिपि मोड में जाने के लिए आप उपयोग कर सकते हैं prefix-[और उसके बाद का उपयोग कर स्क्रॉल C-upऔर C-downया आप अपने स्वयं कीबाइंडिंग सेट कर सकते हैं (कॉन्फ़िग फ़ाइल में) जो इस तरह Emacs मोड दिखता में:

bind-key -t emacs-copy -n S-PPage halfpage-up
bind-key -t emacs-copy -n S-NPage halfpage-down

यह कुंजी संयोजनों को Shift+ PageUpऔर Shift+ PageDownआधे पृष्ठ को कॉपी मोड में क्रमशः नीचे स्क्रॉल करने के लिए सेट करेगा । जब आप vi-mode का उपयोग कर रहे हों, तो आपको इसे कुछ इस तरह बदलने की जरूरत है:

bind-key -t vi-copy -n S-PPage halfpage-up
bind-key -t vi-copy -n S-NPage halfpage-down

अब यदि आप कॉपी मोड "स्वचालित रूप से" दर्ज करना चाहते हैं और prefix-[आप का उपयोग नहीं करना चाहते हैं तो आप निम्न फ़ाइल को अपनी कॉन्फ़िग फ़ाइल में जोड़ सकते हैं:

bind-key -t root -n S-PPage copy-mode -u

यह कॉपी मोड को खोलेगा और Shift+ PageUpको एडिट-मोड (डिफ़ॉल्ट-मोड) में दबाने पर (पूर्ण) पेज को स्क्रॉल करेगा । केवल एक पृष्ठ को स्क्रॉल किए बिना केवल प्रतिलिपि मोड खोलने के लिए, बस को छोड़ दें -u। और यदि आप एक पूर्ण पृष्ठ को ऊपर / नीचे या केवल एक पंक्ति में स्क्रॉल करना चाहते हैं तो आप कीवर्ड का उपयोग कर सकते हैं page-up, scroll-upया किसी एक कमांड का उपयोग कर सकते हैं

tmux list-keys -t vi-copy
tmux list-keys -t emacs-copy

कीबाइंडिंग का उपयोग करने और डिफ़ॉल्ट करने के लिए विकल्पों की पूरी सूची देखने के लिए।


1
मुझे यकीन नहीं है कि यह tmuxमेरे चलने का संस्करण है या नहीं, लेकिन -tपैरामीटर पहचाना नहीं गया है (हालांकि, -T काम करता है) संभव टाइपो?
mdip

ज्यादातर शायद एक टाइपो लेकिन यह भी एक साथ समझ में नहीं आता है -n, क्योंकि यह एक शॉर्टकट है-T root
smido

4

यहां एक समाधान है जो बस आपकी मांसपेशियों की स्मृति के साथ काम करना चाहिए, जिससे आप सामान्य टर्मिनल में Shift+ PageUpऔर Shift+ का उपयोग PageDownकर सकेंगे।

bind -n Pageup copy-mode -u
bind -n S-Pageup copy-mode -u
bind -n S-Pagedown send-keys Pagedown

यदि आप विम का उपयोग कर रहे हैं, तो आप सशर्त रूप से इस बंधन को सक्षम करना चाहते हैं या जब आप उपयोग करते हैं PageUp, तो यह tkux के अंदर विम आदि चीजों को गड़बड़ कर देगा ।

is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
    | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind -n Pageup if-shell "$is_vim" "send-keys Pageup" "copy-mode -u"
bind -n S-Pageup if-shell "$is_vim" "send-keys Pageup" "copy-mode -u"
bind -n S-Pagedown send-keys Pagedown

(@ Mjwhitta के समाधान के लिए धन्यवाद, जो इसे परिष्कृत करता है)


+1 लेकिन bind -n Pageup if-shell "$is_vim" "send-keys Pageup" "copy-mode -u; send-keys Pageup"कई प्रेस पर स्क्रॉल जारी रखने के लिए पेजअप प्राप्त करना आवश्यक था।
79E09796
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.