2010-11-12 14:02:16 +0000 2010-11-12 14:02:16 +0000
271
271

Scroll shell uitvoer met muis in tmux

Muis scrollen werkt niet in tmux zoals het werkt wanneer ik shell zonder tmux draai (in Gnome Terminal). Het lijkt erop dat tmux muis scrol-events verstuurt alsof ik op de omhoog/omlaag-toetsen druk. Maar ik wil dat het door de shell output geschiedenis scrollt. Is er een manier om tmux op deze manier te laten werken?

Note: Ik weet hoe ik met het toetsenbord moet scrollen (met dank aan een andere vraag hier).

Ik heb muis scrollen geprobeerd in twee versies van tmux:

Antwoorden (10)

264
264
264
2010-12-01 18:48:45 +0000

Om te scrollen binnen de geschiedenis van de uitvoer zou je ^b + [ gebruiken. Je kunt dan M+V gebruiken om omhoog te bladeren en ^V om omlaag te bladeren. Ik weet niet of je de echte PgUp en PgDown kunt gebruiken. Mijn terminal stuurt deze toetsen niet naar de tmux. In plaats daarvan scrollt hij zelf en niet de geschiedenis van de tmux.

Om de kopieermodus te verlaten, druk op ESC

Om je muis te gebruiken in deze modus (kopieermodus genoemd) druk op ^b + : en voer het volgende in:

setw -g mouse on

Opmerking: In tmux< 2.1, heette de optie mode-mouse, en niet mouse

Nu kunt u, wanneer u naar de kopieermodus overschakelt, uw muis gebruiken om er doorheen te bladeren. U kunt dit commando in uw ~/.tmux.conf zetten als u wilt, zodat het iedere keer dat u tmux start wordt geladen.

Update: Vanaf tmux 1.5 zorgt deze optie ervoor dat het gebruik van het scroll-wiel automatisch naar kopieermodus overschakelt en de tmux scroll-buffer terugbladert. Het is niet meer nodig om eerst op Ctrl-B + [ te drukken. Terugscrollen naar de prompt beëindigt ook automatisch de kopieermodus.

127
127
127
2015-10-19 11:02:01 +0000

Er zijn enkele veranderingen voor Tmux 2.1

  • Mouse-mode is herschreven. Er zijn nu geen opties meer voor:

Dat zou zijn

set -g mouse on
# to enable mouse scroll, see https://github.com/tmux/tmux/issues/145#issuecomment-150736967
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
64
64
64
2011-11-15 20:05:50 +0000

Met de huidige versie van tmux (1.5) kunt u eenvoudig de modus-muis optie aanzetten, en kunt u scrollen met het muiswiel.

mode-mouse [on | off]
                 Mouse state in modes. If on, the mouse may be used to
                 enter copy mode and copy a selection by dragging, to
                 enter copy mode and scroll with the mouse wheel, or to
                 select an option in choice mode.

In mijn .tmux.conf:

set-window-option -g mode-mouse on
59
59
59
2012-10-24 16:55:07 +0000

Probeer dit eens in je .tmux.conf

# Make mouse useful in copy mode
setw -g mode-mouse on

# Allow mouse to select which pane to use
set -g mouse-select-pane on

# Allow xterm titles in terminal window, terminal scrolling with scrollbar, and setting overrides of C-Up, C-Down, C-Left, C-Right
set -g terminal-overrides "xterm*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"

# Scroll History
set -g history-limit 30000

# Set ability to capture on start and restore on exit window data when running an application
setw -g alternate-screen on

# Lower escape timing from 500ms to 50ms for quicker response to scroll-buffer access.
set -s escape-time 50

Overgenomen van http://brainscraps.wikia.com/wiki/ExtremeMultitaskingwithtmuxand_PuTTY

16
16
16
2011-06-22 17:10:05 +0000

Iemand (van een bron die ik kwijt ben) stelde voor om het volgende toe te voegen aan ~.tmux.conf:

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

Ik heb geen idee hoe het werkt of wat het doet, maar dit stelt me nu in staat om te scrollen met het muiswiel binnen een tmux sessie zonder de kopieermodus van tmux te hoeven openen; ik scroll gewoon met het wiel en BAM! het werkt. Merk op dat ik terminal.app gebruik, maar ik herinner me dat de OP het antwoord specifiek gaf voor gebruik met gnome-terminal.

5
5
5
2015-12-15 23:44:29 +0000

tmux 2.1 introduceert nieuwe muis bindingen.

Ik heb deze bindingen net vandaag geschreven. Het bindt het muiswiel naadloos aan pijlen wanneer het niet in Vim is, omdat Vim in staat is om de ruwe muiswielcodes te interpreteren (voor doeleinden zoals het kiezen van welk Vim venster voor je scrollt, afhankelijk van het venster waar je muis zich boven bevindt).

Dit betekent dat we eindelijk de muis alleen kunnen gebruiken om meerdere man pagina’s te bekijken en al het andere dat pijltjestoetsen accepteert. Je kunt de if logica naar behoefte uitbreiden en aaneenschakelen om meer logica voor je toepassingen te implementeren.

bind -n WheelUpPane if "[[#{pane_current_command} =~ vim]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Up"
bind -n WheelDownPane if "[[#{pane_current_command} =~ vim]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Down"

Met deze nieuwe wielbindingsmogelijkheid is het mogelijk om het muiswiel te scripten om elk contextgevoelig gedrag te doen dat je maar wilt.

5
5
5
2019-04-23 15:29:55 +0000

Als u zich al in een tmux-sessie bevindt, kunt u het commando

set mouse on

uitvoeren Herinnering: om commando’s uit te voeren, gebruikt u uw voorvoegsel en dan :.

3
3
3
2010-12-07 07:03:31 +0000

Gnome-terminal doet wat handige trucjes met het vertalen van muis scroll gebeurtenissen naar Boven en Onder pijltjestoetsen in omstandigheden van beperkt “gewoon” scrollen. Bijvoorbeeld, wanneer je wat tekst bekijkt met less (dit gebeurt met name wanneer je een man leest), dan kun je de inhoud scrollen met j, k, en pijltjestoetsen. Maar ooko, met gnome-terminal, kun je dat doen met muis scrollen, dankzij de genoemde truc.

Dus ik denk dat tmux de terminal “vangt”, net als less - en hetzelfde mechanisme in gnome-terminal treedt in werking: muis scrollen vertaalt zich in omhoog/omlaag drukken op de pijltjestoetsen.

Je kunt deze functie uitschakelen in de profielinstellingen en dan krijg je het gewone scrollen onder alle omstandigheden. Verwijder gewoon het vinkje in het tabblad “scrollen”:

.

1
1
1
2018-01-02 23:48:52 +0000

(https://github.com/NHDaly/tmux-better-mouse-mode)

Configureerbare en functierijke implementatie van muisbesturing voor nieuwere tmuxes. sterk aanbevolen.

Je wilt waarschijnlijk ook

set -g @emulate-scroll-for-no-mouse-alternate-buffer "on"

ermee gebruiken.

0
0
0
2018-02-12 23:02:10 +0000

Je kunt de bindingsideeën uit de andere antwoorden combineren om een behoorlijk bevredigend scroll-gedrag te krijgen: werkt in vim verandert automatisch in de kopieermodus in terminal en verlaat deze wanneer je de bodem bereikt nog steeds toestaan om je muiswiel te gebruiken in man, less en journalctl.

Mijn code:

bind -n WheelUpPane if -t = "test $(echo #{pane_current_command} |grep -e 'man' -e 'less' -e 'journalctl')" "select-pane -t = ; send-keys Up Up Up Up" "if-shell -F -t = '#{?mouse_any_flag,1,#{pane_in_mode}}' 'send-keys -M' 'select-pane -t = ; copy-mode -e; send-keys -M'"
bind -n WheelDownPane if -t = "test $(echo #{pane_current_command} |grep -e 'man' -e 'less' -e 'journalctl')" "select-pane -t = ; send-keys Down Down Down Down" "if-shell -F -t = '#{?mouse_any_flag,1,#{pane_in_mode}}' 'send-keys -M' 'select-pane -t = ; copy-mode -e; send-keys -M'"

je kunt andere commando’s toevoegen die pijltjestoetsen nodig hebben om te scrollen in het grep -e ‘man’ gedeelte

ik heb de send-toetsen meerdere keren toegevoegd, dus één tik op het muiswieltje scrollt 4 regels per keer