Tmux'ta nasıl kaydırırım?


1294

Tmux'u kullanmaya başladım ve gerçekten hoşuma gitti, ancak açtığım tampon / bölmeler / pencereler arasında kaydırma yapabilmem gerekiyor. Fare ile çalışıp çalışmadığı umrumda değil. Tmux man sayfasını aradığımda, "scroll" kelimesinin sadece iki örneğini göstermeme rağmen buluyorum ve her ikisinin de kopyalama modu ile ilgisi var. Kopyalama moduna girmenin tüm ek yükü olmadan kaydırma yapmanın bir yolu var mı?


8
Hangi ek yükü önemsiyorsun? copy-modeöyküyü görüntüleme şeklidir (ve isteğe bağlı olarak sayfalardakileri kopyala).
Chris Johnsen

2
benim için kaydırma modu için f7 tuşuna basabilir ve çıkmak için q tuşuna basabilirsiniz
JohnMerlino

7
set -g mode-mouse on@ chaiyachaiya'nın yanıtı benim için kazandı
Peter Berg

Yanıtlar:


1569

Ctrl- bo [zaman dolaşmak için normal gezinme tuşlarınızı kullanabilirsiniz (örn. Up Arrowveya PgDn). Basın qkaydırma modundan çıkmak için.

Alternatif olarak, doğrudan kopyalama moduna geçmek ve bir sayfa yukarı kaydırmak için Ctrl- düğmesine basabilirsiniz b PgUp(bu, çoğu zaman istediğiniz gibi ses çıkarır)

In vimodu (aşağıya bakınız), ayrıca kullanarak çizgi ile / aşağı çizgiyi sayfa yukarı kaydırma yapabilirsiniz Shift- kve Shift- j(kaydırma modunda zaten iseniz). Değiştirilmemiş, imleç sayfa yerine hareket eder.

Man sayfasından alıntılar :

tmux, 'C-b' (Ctrl-b) önek tuşunun tuş kombinasyonunu ve ardından bir komut tuşunu kullanarak bağlı bir istemciden kontrol edilebilir.

 The default command key bindings are:

[           Enter copy mode to copy text or view the history.

Function                     vi              emacs
--------                     --              -----
Half page down               C-d             M-Down
Half page up                 C-u             M-Up
Next page                    C-f             Page down
Previous page                C-b             Page up
Scroll down                  C-Down or C-e   C-Down
Scroll up                    C-Up or C-y     C-Up
Search again                 n               n
Search again in reverse      N               N
Search backward              ?               C-r
Search forward               /               C-s

Artı bir sürü daha. Komut tuşu olarak bağlandığı C-biçin sayfa yukarı kullanıyorsanız, iki kez basmanız gerektiğini unutmayın C-b. Bir yineleme sayımına sahip bir kopya modu komutunu önyüzleme hakkında bilgi için kılavuz sayfasına bakın.

Sen kullanarak anahtar bağlama modunu ayarlayabilirsiniz Ctrl- b, o zaman

:set-window-option mode-keys emacs

veya vi.


14
Bence C-b =olduğunu choose-buffervarsayılan olarak. Şunu mu demek istediniz C-b [( copy-modevarsayılan olarak)? Ayrıca, C-b PageUpdoğrudan önceki sayfada kopya modunu başlatmak için de kullanabilirsiniz (ne görmek / kopyalamak istediğinizi zaten mevcut sayfadan kaydırdığınızı bilmek çok kullanışlı).
Chris Johnsen

4
Doğru, tmux'umun kaydırma modu yok. C-b [Kopyalama moduna girmeniz ve sonra gezinmek için emacs veya vi tuşlarını kullanmanız gerekir . Bu sadece kaydırma yapmak için pek çok adım gibi görünüyor, ancak tmux'un yararları hala bu sıkıntılardan daha ağır basıyor. Bir macbook'tayım ve PageUp anahtarı yok: - \. (Ayrıca, sizin gibi
markdown

44
@chadoh: Bunları Macbook'unuzda deneyin: Giriş: fn-LeftArrow; Son: fn-RightArrow; Sayfa Yukarı: fn-UpArrow; Sayfa Aşağı: fn-DownArrow. Keycaps yapmak için:<kbd>Ctrl</kbd>
Dennis Williamson

5
macbook'ta fn + up doğruca terminal uygulamasına gider ve asla tmux'u vurmaz
Tyler

15
Macbook'ta kaydırma modundaysanız, bir sayfayı yukarı kaydırmak için fn + Shift + LeftArrow tuşlarını kullanabilirsiniz.
Nick Hammond

306

Kaydırmayı ayarlamanın uygun yolunu düşünmelisiniz: tmux.conf

set -g mouse on        #For tmux version 2.1 and up

veya

set -g mode-mouse on   #For tmux versions < 2.1

Benim için pencerelerde ve camlarda çalıştı. Şimdi tmux sadece mükemmel.

Pratik tmux , tmux.conf dosyaları hakkında daha fazla bilgiye sahiptir.


5
Bunu yaptığımda, fare tıklamaları ve kaydırmaları tmux ile kullandığım terminalin bilgi istemi alanına yazdırılan karakterlerin yazdırılmasına neden oluyor. Herhangi bir fikir?
ely,

22
Gelecekteki tmux fare kullanıcıları: Yazmadan önce tekrar tabana kaydırmanız gerekmediğinden, qkaydırma modundan çıkmak için tuşuna basabilirsiniz .
Jezen Thomas

15
Fare kaydırması bununla iyi çalışır, ancak ne yazık ki artık metni seçmek için fareyi kullanamıyorum. Tilda ve tmux kullanımı.
friederbluemle 17:15

27
Tmux 2.1 ve üzeri sürümlerde bunun yerine kullanıldığını set -g mouse onve kaydırma işleminin otomatik olarak daha önce yaptığınız gibi kopyalama moduna girmediğini unutmayın.
thrnio

25
Önemli not: Bu ayar metni vurgulamayı ve kopyalamayı keser. Bu işlevselliği korumak için shift + klik kullanın.
Shadoninja

141

.Tmux.conf'umdan:

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

Bu, yerel xterm kaydırmayı sağlar.


28
Bunun tam olarak ne yaptığını açıklayabilir misin?
Ivo

11
Ne yaptığını bilmiyorum ama saf bir dahi. Sonunda, tmux kaydırma çalışıyor, yay!
kendini

5
Bu benim için OS X'de işe yaramıyor ...
Nick


6
Togdon'un cevabı hakkında kafanız karıştıysa bunu kontrol edin: superuser.com/questions/310251/… IMO, yalnızca bir bölmeniz varsa, bu çözüm kabul edilen yanıttan daha iyi sonuç verir.
thameera

57

En yeni tmux 2.1 için, farenizle kolayca kaydırma yapmak için doğru cevap:

set -g mouse on
" sane scrolling:
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e; send-keys -M'"

.tmux.conf dosyanızı yeniden yüklemeniz yeterli değildir, örneğin tmux'unuzu yeniden başlatmanız gerekir. tmux kill-server && tmux

https://github.com/tmux/tmux/issues/145 adresinden alınmıştır.


1
Bu kabul edilen cevap nasıl değil?
Marcel,

2
Bu cevaptaki "t.
Colin D

1
Bunun nasıl çalıştığını açıklayabilir misiniz?
oligofren

Fare tıklatıldığında / kaydırıldığında / etc olduğunda fare olaylarını iletir. eğer bölme herhangi bir dolaylı / tamponlanmış durumda ise (sadece kopya modu?) ve fare bir düğmeye basıyorsa, kaydırıyor vb. Son bölüm önce dolaylı bir moda geçerek doğrudan modda kaydırmayı kapsar. Bu kontroller için değilse, terminal olayları geçmiş kaydırma olarak yorumlayabilir. Bununla birlikte, çağrı cihazımı ve Vim'imi aynı anda doğru şekilde kaydırmamı sağlayıp sağlayamadığımı bilmiyorum ve etrafta dolanan snippet'lerin bir demetini denedim.
John P

2
@chefarov - başka bir cevaba yapılan yorum için Shift+click, fare modunu açtığınızda bunu yapabilirsiniz .
Brendan Moore

14

Benim durumumda OSX üzerinde sadece opt+ UpArrowve opt+ DownArrowsayılabilir.


@ fixer1234 Soru hiç Linux'tan bahsetmiyor. tmuxOS X'te de kullanılabilir.
slhck

@slhck: Teşekkürler. Çok kasvetli gözlü; astigmatizm devreye girdi. tmux etiketini linux etiketi olarak yanlış okudum.
fixer1234

11

Bu, çalışmamı sağladı ve neden varsayılan yoldan daha iyi olduğunu düşünüyorum.

Denemek için tüm kod bölümlerini içine yerleştirin ~/.tmux.conf.

Adım 1. Önek anahtarını değiştirin, böylece bir bit ulaşmak zorunda kalmazsınız. 'B' görünüşte yakın bir anahtar, ancak iki işaret parmağının ortasında (sırasıyla 'F' ve 'J' de). Bu kısayol tmux'da çok önemli olduğundan Cj, sıfır el hareketi içerdiğinden (tuşa basmanın yanı sıra) çok daha iyidir.

set -g prefix C-j
unbind C-b
bind C-j send-prefix

Adım 2. 'S' (kopya moduna girmek için): 1) yakın (yukarıdakiyle aynı sebep), 2) diğer elden oluşur (karşılaştır: boksta 1-2 veya lsbir dizindeki dosyaları görüntülemek için komut) ), ve 3) "kaydırma" için hatırlatıcı olarak düşünülebilir (kopya modu sadece kaydırma ile ilgili olmasa da).

bind s copy-mode

Adım 3. Son bölüm, gerçek kaydırma. 'P' ve 'N' bu amaç için Emacs kullanıcılarına aşinadır. Yakın, sezgisel ('P' klavyede 'N' nin üstünde) ve anımsatıcı ("önceki" ve "sonraki"). Sadece Emacs'ta biraz kaydırma yaptıysanız ve sonra tmux'a giderseniz, bu kısayolların olması mantıklı olur.

Bununla birlikte, 'I' ve 'K'nin daha iyi olduğunu - “P” ve “N” den daha yakın olduklarını ve sezgisel olduklarını (aynı nedenle) buldum; anımsatıcılara gelince - kaydırma yapmak çok yaygın bir şey olduğu için, anımsatıcılar kısa zamanda beyninizi atlayıp kas hafızasına girecekleri için gerçekten önemli olmayacak.

bind -t emacs-copy 'p' scroll-up
bind -t emacs-copy 'n' scroll-down
bind -t emacs-copy 'i' scroll-up
bind -t emacs-copy 'k' scroll-down

7

Bunun için çok aradım ve benim için en iyi çözüm bu ayrıntılı kılavuzda belirtildiği gibi çalışıyor: http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Bu bağlantıları ~ / .tmux.conf dosyasına ekleyin:

set -g mode-mouse on

unbind +
bind + \
  new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
  swap-pane -s tmux-zoom.0 \;\
  select-window -t tmux-zoom

unbind -
bind - \
  last-window \;\
  swap-pane -s tmux-zoom.0 \;\
  kill-window -t tmux-zoom

Yukarıdaki yaklaşım uygulandığında, bir penceredeki bölmelerden kopyalayabilirsiniz, ayrıca Prefix + kullanarak her bölmeyi yakınlaştırabilirsiniz .

Fare modunda eksik olan önemli bir detay, kopyalanacak alanı seçmeden önce Shift tuşuna basmaktır . Bu, tmux kopyalama tamponu yerine geleneksel terminal tamponuna kopyalayacaktır. ( https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues )


7

Tmux mouse ile ilgili sorunların çoğunu çözmek için tmux-better-mouse-mod eklentisini denemenizi tavsiye ederim .

Tmux 2.1+ ve yeni set-option -g mouse onyaklaşım ile uyumludur .


1
Teşekkürler, bu benim için en iyi çözüm. Ben (yani artık onlara ihtiyacım yok) manuel olarak eklediğiniz tüm fare tekerleği bağlamaları kapsar ve ben çok isteyen iki katil özellikleri vardır: scroll-without-changing-panekombinasyon halinde olan scroll-without-changing-paneve emulate-scroll-for-no-mouse-alternate-buffer. Şimdi benim tmux kullanım deneyimim yol, yol daha iyi.
selurvedu

6

Benim için çalışan tek şey aşağıdakileri koymaktır. ~/.tmux.conf

# 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"

(bunun etkili olması için yeniden başlatmanız gerekebilir)

Güncelleme:

Eğer Macun Bağlantı> Veri> Terminal tipi ayarını "macun" olarak değiştirirseniz (bazı biçimlendirme sorunlarını düzeltmek için kullanılır) "xterm" den değiştirirseniz, bu çözümün çalışmayı durdurduğunu gördüm.

Güncelleme 2:

Terminal tipiniz olarak "macun" istiyorsanız bunu kullanın: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"


2
Bu aslında iPhone uygulamasındaki kaydırma problemimi de çözüyor.
NathaneilCapital

Son denediğimde artık işe yaramadı ama bu işe yaradı. Garip. set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
16'da

4

Bu benim için çalıştı:

vim ~/.tmux.conf
set -g mode-mouse on      ###Insert this setting with vim, then source the file.
tmux source-file ~/.tmux.conf

2
Sürüm 2.1'den (18 Ekim 2015) beri seçenek şöyle olmalıset -g mouse on
naoko

Yapılandırma dosyasının tam yolunu sağlamak için +1. @ chaiyachaiya'nın cevabı aksi takdirde mükemmel olurdu.
John McFarlane

1

FWIW, bir macbook / OSX Mojave'de, sonra ctrl+[:

  • up arrow sıraya girmek için
  • down arrow sıra için
  • fn + up arrow sayfa yukarı için
  • fn + down arrow sayfa aşağı için
  • q modundan çıkmak için

0

Benim için işe yarayan tek şey vim ~ / .tmux.conf set -g mode-mouse üzerinde ### idi. Bu ayarı vim ile ekleyin, sonra dosyayı kaynaklayın. tmux kaynak dosyası ~ / .tmux.conf


Bunu daha net hale getirmek için biraz biçimlendirme kullanabilir misiniz? EDIT düğmesini kullanın ve yardımcı formatları eklemek için editördeki mevcut seçeneklere bakın.
music2myear

-2
  • Ctrl+ A- kaydırmaya başlamak için
  • Ctrl+ C- kaydırmayı durdurmak için

3
Bu yayın, soruyu yararlı bir şekilde cevaplamak için çok kısa. Daha önce gönderilen cevaplara çok az yeni bilgi ekliyor; nasıl kaydırılacağı hakkında hiçbir şey söylemez (yalnızca kopyalama moduna nasıl girip çıkarılacağı). Ayrıca, varsayılan komut önek tuşu birleşimidir Ctrl-B( Ctrl-AGNU ekranı için varsayılandır).
Anthony Geoghegan

1
Bu cevabın yazarı soruyu bile anladı mı emin değilim. Faydasız ve sadece yanlış.
Vik

2
Kaydırmayı çok uzun zamandır nasıl durduracağımı araştırdım, işaret ettiğin için teşekkürler!
PERR0_HUNTER
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.