กลับพฤติกรรมการวางสำเนาแบบเก่าใน tmux ด้วยเมาส์


111

นี่คือสิ่งที่ฉันเคยทำใน tmux เพื่อคัดลอกวาง (โดยใช้เมาส์แป้นพิมพ์ทำงานแตกต่างกันและไม่ใช่สิ่งที่ฉันสนใจ):

  1. เลือกข้อความด้วยเมาส์กดปุ่มซ้าย
  2. วางข้อความด้วยปุ่มกลาง

ฉันได้อัปเกรดระบบปฏิบัติการของฉันแล้วและได้รับ tmux เวอร์ชันใหม่แล้ว ฉันไม่ได้เปลี่ยน.tmux.confไฟล์กำหนดค่าของฉัน

นี่คือสิ่งที่ผมต้องทำอย่างไรกับรุ่นปัจจุบันtmux, 1.6(ที่มาก่อนบรรจุในลินุกซ์ crunchbang ล่าสุด):

  1. เลือกข้อความด้วยเมาส์กดปุ่มซ้ายและ shiftคีย์
  2. วางข้อความด้วยปุ่มกลาง
  3. Terminal ถูกบล็อกพื้นที่ข้อมูล litte จะแสดงตัวเลขบางส่วนที่ด้านบนขวาของบานหน้าต่างปัจจุบัน (เช่น[0/24]อาจเป็นสิ่งที่เกี่ยวข้องกับจำนวนอักขระที่วางไว้) ซึ่งมีความหมายเพียงเล็กน้อยสำหรับฉันและฉันไม่ต้องการ / ต้องการ (แก้ไข: มัน ดูเหมือนว่าcopy-modeจะถูกป้อนโดยอัตโนมัติที่นี่)
  4. ฉันต้องกดqปุ่มเพื่อรับเทอร์มินัลที่ใช้งานได้อีกครั้ง

นี่เป็นเรื่องยุ่งยากเกินไปสำหรับบางสิ่งที่ฉันทำหลายสิบครั้งต่อวัน จะทำให้กลไกเก่าทำงานอีกครั้งได้อย่างไร?


2
ใน terminal ของฉันst, Shift+ MouseMiddleน้ำพริก Xselection เช่นพฤติกรรมแบบดั้งเดิม FWIW MouseMiddleโดยไม่มีตัวปรับแต่งไม่ทำอะไรเลย
nabin-info

คำตอบ:


84

ในการกู้คืนการกำหนดค่าเริ่มต้นคัดลอก / วางคุณต้อง (อย่างน้อยชั่วคราว) ปิดการรองรับเมาส์ภายใน tmux:

prefix : set -g mouse off

prefixคีย์การเข้าถึง tmux อยู่ที่ไหน( Ctrl+ Bตามค่าเริ่มต้นเว้นแต่คุณจะแมปใหม่) :เริ่มโหมดคำสั่งและset -gตั้งค่าพารามิเตอร์ทั่วโลก

เมื่อปิดโหมดเมาส์ฟังก์ชันคัดลอก / วางมาตรฐานที่ระบบปฏิบัติการของคุณมีให้จะทำงานตามที่คาดไว้

อย่างอื่นที่คุณอาจต้องการทำคือ 'ขยายใหญ่สุด' บานหน้าต่างปัจจุบันเพื่อให้คุณสามารถคัดลอกหลายบรรทัดได้อย่างง่ายดาย


หากคุณกำลังทำงานกับ tmux เวอร์ชันเก่า (ก่อน 2.1) คุณต้องใช้สิ่งต่อไปนี้แทน:

prefix : set -g mode-mouse off

มีรายละเอียดเพิ่มเติมและการผูกคีย์ที่มีประโยชน์เพื่อทำให้ทั้งหมดนี้เป็นอัตโนมัติที่นี่:

http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

แรงผลักดันหลักของบทความที่เชื่อมโยงกับด้านบนคือข้อความที่ตัดตอนมาจาก. tmux.conf:

# disable mouse control by default - change 'off' to 'on' to enable by default.
setw -g mode-mouse off
set-option -g mouse-resize-pane off
set-option -g mouse-select-pane off
set-option -g mouse-select-window off
# toggle mouse mode to allow mouse copy/paste
# set mouse on with prefix m
bind m \
    set -g mode-mouse on \;\
    set -g mouse-resize-pane on \;\
    set -g mouse-select-pane on \;\
    set -g mouse-select-window on \;\
    display 'Mouse: ON'
# set mouse off with prefix M
bind M \
    set -g mode-mouse off \;\
    set -g mouse-resize-pane off \;\
    set -g mouse-select-pane off \;\
    set -g mouse-select-window off \;\
    display 'Mouse: OFF'
# zoom this pane to full screen
bind + \
    new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
    swap-pane -s tmux-zoom.0 \;\
    select-window -t tmux-zoom
# restore this pane
bind - \
    last-window \;\
    swap-pane -s tmux-zoom.0 \;\
    kill-window -t tmux-zoom

13
หากคุณมี tmux 1.8 หรือใหม่กว่ามีคำสั่งในตัวคือ Control-B z ซึ่งจะสลับสถานะการซูมของบานหน้าต่างปัจจุบัน ดังนั้น CB z เพื่อซูมบานหน้าต่างนี้ให้เต็มหน้าจอคำสั่งเดียวกันอีกครั้งเพื่อกู้คืน สิ่งนี้จะขจัดความจำเป็นในการกำหนด CB + และ CB - ลำดับคีย์ที่ส่วนท้ายของการกำหนดค่าด้านบน
dr-Jan

9
หากคุณมี tmux 2.1 หรือใหม่กว่าคำสั่งที่เกี่ยวข้องกับเมาส์ทั้งหมดนั้นล้าสมัยแล้วแทนที่ด้วย 'เมาส์' ซึ่งตั้งค่าทุกอย่าง ดังนั้นหากต้องการปิดใช้งานโหมดเมาส์โดยค่าเริ่มต้นให้ใช้ 'setw -g mouse off' ลบการอ้างอิงถึง 'mode-mouse', 'mouse-resize-pane', 'mouse-select-pane' หรือ 'mouse-select-window'
dr-jan

50
อย่างไรก็ตามการเปิดโหมดเมาส์มีประโยชน์: ช่วยให้ฉันเลื่อนได้ มีการตั้งค่าร่วมกันที่ช่วยให้ฉันใช้เทอร์มินัลเหมือนกับเทอร์มินัลยี้ห้อปกติหรือไม่? รวมคัดลอก / วางและเลื่อน?
Mihai Danila

1
มีบางการตั้งค่าอื่น ๆ ผมอาจจะสับสนกับเพราะบนOSx (Sierra), optionไม่ได้ช่วย การหมุนmode-mouse offช่วยให้ฉันเลือกได้เหมือนปกติ แต่ฉันไม่สามารถคัดลอกลงในคลิปบอร์ดได้ ( cmd+Cหรือcmd+shift+Cไม่ทำอะไรเลยหรือกดกริ่งข้อผิดพลาดหรือเปิดตัวเลือกสี)
dwanderson

3
ทดสอบด้วย tmux v3 หนึ่งการผูกเพื่อเปิดและปิด:bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

249
  1. คัดลอกข้อความ: เลือกข้อความและกดเมาส์left-buttonด้วยการshiftกดปุ่มด้วย
  2. วางข้อความด้วยshiftปุ่ม +middle-button

30
สำหรับผู้ใช้ OSX เป็นคีย์ตัวเลือกตามที่อธิบายไว้ในบล็อกโพสต์นี้: awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse
pangratz

3
ในความเป็นจริงหลังจากเลือกข้อความด้วย Shift + LMB คุณสามารถใช้ฟังก์ชันระบบปฏิบัติการ (Ctrl-Shift-C ในกรณีของฉัน) เพื่อคัดลอกไปยังคลิปบอร์ดที่ไม่ใช่ X11
Eugene Pankov

8
OP ระบุอย่างชัดเจนว่าต้องการคัดลอกและวางด้วยเมาส์โดยไม่ต้องใช้แป้นพิมพ์ การกดShift(หรือปุ่มตัวเลือกบน OSX) เป็นเคล็ดลับที่เก่าแก่ที่สุดในหนังสือและใช้ได้กับอีมูเลเตอร์ส่วนใหญ่ แต่ไม่ตอบคำถามเดิม
Lqueryvg

1
@pangratz การใช้คีย์ตัวเลือกอาจใช้ได้กับผู้ใช้ iTerm แต่ไม่ใช่สำหรับผู้ใช้ Terminal ดั้งเดิม
anishpatel

ขอบคุณสำหรับวิธีแก้ปัญหานี้! แม้ว่าจะยังไม่ดีพอ - ล้อเลื่อนของเมาส์ = เลื่อนประวัติและฟังก์ชันอื่น ๆ ของเมาส์ = ปกติจะดีกว่ามาก
Torsten Bronger

36

หาก "set -g mode-mouse on" คุณสามารถทำเคล็ดลับนี้ได้:

บน Mac ให้กดปุ่ม "fn" จากนั้นเลือกข้อความและคัดลอกด้วยเมาส์คลิกขวาหรือแป้นพิมพ์ cmd + c


4
สำหรับฉันสิ่งนี้ดูเหมือนจะใช้ได้ก็ต่อเมื่อฉันไม่เลื่อนเมาส์ เมื่อฉันเลื่อนด้วยเมาส์สิ่งนี้จะใช้ไม่ได้อีกต่อไป
พอล

นอกจากนี้คุณสามารถวางด้วยfn+Middle-Click
spinup

10

แก้ไขจากที่นี่ - ฉันใช้xclipแทนxselในต้นฉบับ:

bind -T root MouseDown2Pane run -b "xclip -o | tmux load-buffer - && tmux paste-buffer -s ' '"

มันทำงานได้ดีสำหรับฉันใน tmux 2.5-rc2


ใช้งานได้ดีในเทอร์มินัล แต่มันทำงานแปลก ๆ เมื่อฉันพยายามวางในกลุ่ม
Tropilio

9

ใช้<prefix>+mเปิดหรือปิดโหมดเมาส์

bind m run "if [[ `tmux show-option -w | grep mode-mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mode-mouse \$toggle &> /dev/null; for cmd in mouse-select-pane mouse-resize-pane mouse-select-window; do tmux set-option -g \$cmd \$toggle &> /dev/null; done;"

สิ่งนี้เหมาะสำหรับฉัน ขอบคุณมาก. ฉันอยากจะสามารถเลื่อนในโหมดเมาส์ได้ แต่นั่นทำให้ฉันไม่สามารถคัดลอกข้อความได้ สิ่งนี้ช่วยให้สามารถเปลี่ยนได้อย่างรวดเร็วหากคุณต้องการปิดโหมดเมาส์
Bijan

6
ฉันใช้bind m set-option mouse\; display-message "Mouse is now #{?mouse,on,off}"
Maxim Suslov

ผู้ใช้ต้องการที่จะสามารถคัดลอกและวาง แต่ยังปรับแต่ง. tmux.conf ไม่ได้อีก!
Jack Wasey

6

ฉันมีปัญหาในการนำแบบอย่างของคริสเตียนมาทำงานใน Tmux 2 ฉันคิดว่าพิมพ์ผิด ฉันได้รับข้อมูลด้านล่างในการทำงานและง่ายกว่าเล็กน้อยในการอ่านและตั้งค่าทั้งโหมดโกลบอลและวินโดว์ ใครบางคน ผู้ใช้ใหม่และ tmux นั้นยอดเยี่ยมมาก!

bind m run "\
    tmux show-options -g | grep -q "mouse\\s*on"; \
    if [ \$? = 0 ]; \
    then  \
        toggle=off;  \
    else  \
        toggle=on;  \
    fi;  \
    tmux display-message \"mouse is now: \$toggle\";  \
    tmux set-option -w mouse \$toggle; \
    tmux set-option -g mouse \$toggle; \
    "

1
ใช้ได้ผลสำหรับฉัน ทดสอบกับ tmux HEAD จาก github (เมื่อวานนี้)
Lqueryvg

2
เพื่อให้งานนี้ผมต้องเปลี่ยนสายไปshow-options tmux show-options -g | grep -q "mouse\\s*on"; \ เนื่องจาก regex mouse.*onจับคู่@scroll-in-moused-over-pane "on"ซึ่งเป็นส่วนหนึ่งของปลั๊กอินnhdaly / tmux-better-mouse-mode
Mandy Schoep

1
การผูกที่เรียบง่ายกว่าที่ทำโดยพื้นฐานแล้ว -bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

6

สำหรับผู้ใช้Mac + iTerm2 + tmux (เวอร์ชัน> 2.1) :

ตรวจสอบให้แน่ใจว่าโหมดเมาส์ถูกตั้งค่าใน tmux config (เพียงแค่เพิ่มset -g mode-mouse onใน ~ / .tmux.conf) ตอนนี้ในการคัดลอกข้อความภายในบานหน้าต่าง:

  1. กดoption + commandและเลือกข้อความที่คุณต้องการคัดลอกโดยใช้เคอร์เซอร์ของเมาส์ มันเหมือนกับการครอบตัดรูปภาพ
  2. ข้อความที่เลือกจะถูกคัดลอกโดยอัตโนมัติ (ไม่จำเป็นcommand + c) เพียงแค่วางตามปกติ

5

Yves Blusseauช่วยฉันคิดว่ามันทำงานอย่างไร แต่ในเครื่องของฉัน (ใช้Windows 10 ) พฤติกรรมแตกต่างกันเล็กน้อย

tmux 2.6

ด้วยเมาส์ที่เปิดใช้งาน ( :set -g mouse on)

สำเนา

  1. กดค้างไว้Shiftและเลือกด้วยเมาส์ของคุณข้อความที่คุณต้องการคัดลอก
  2. คลิกขวาเพื่อคัดลอกข้อความที่เลือก (โดยไม่ต้องกดค้างไว้Shift)

วาง

  1. กดค้างไว้Shiftและคลิกขวาเพื่อแทรกข้อความที่คัดลอก

ง่ายๆแค่นั้นเอง สนุก!


ที่สุด. เรียบง่ายและสง่างาม
อ่อนแอ

3

นี่คือคำตอบของ Kaixuanเวอร์ชันแก้ไขที่เข้ากันได้กับ Tmux 2.1

`bind m run "if [[ `tmux show-options -w | grep mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mouse \$toggle &> /dev/null;`"

mode-mouseตัวเลือกทั้งหมดรวมกันเป็นmouseตัวเลือกเดียวและshow-optionต้องแทนที่ด้วยshow-options


1
สมมติว่าอยู่บน tmux.conf? ??
Arnold Roa

1
มันจะไปไหน?
สถิติ

@ArnoldRoa @statquant: ใช่สิ่งนี้จะเข้าสู่~/.tmux.confไฟล์ เป็นการผูก<prefix>+mคีย์เพื่อเรียกใช้สคริปต์อินไลน์นั้น
inblueswithu

0

ใน~/.tmux.conf:

set -g mouse off

มีbind r source-file ~/.tmux.confอาจจะมีประโยชน์มากเกินไปเพื่อให้คุณสามารถทำctrl-d rเพื่อโหลดการตั้งค่าเช่น


0

จากคำตอบอื่น ๆ ที่โพสต์ไว้ที่นี่ฉันได้สร้างโซลูชันที่กระชับซึ่งใช้ได้กับ (อย่างน้อย) tmux 2.8และtmux 3.1

คุณสามารถสลับ tmux mouse supportการเปิดและปิดโดยการกด-prefix Mใน.tmux.confไฟล์รวมบรรทัดนี้:

bind-key -T prefix m run "m=$(tmux show -g mou|grep -q on;echo $?);tmux set -g mou $m;tmux display mouse:\$m"

สิ่งนี้จะแสดงmouse: 1เมื่อเปิดใช้งานและmouse: 0เมื่อปิดใช้งาน กดซ้ำ ๆprefix - Mจะสลับโหมดเมาส์ระหว่างในและนอก

ดูเพิ่มเติมที่: รองรับเมาส์ tmux

แก้ไข:หากคุณเห็นreturned 1ข้อความแสดงข้อผิดพลาดของคำสั่งคุณจะต้องใช้สิ่งต่อไปนี้แทนสำหรับtmux 3.1หรือtmux 3.2 :

bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'

(โซลูชันนี้ได้กล่าวไว้ก่อนหน้านี้)


0

นี่คือการสลับเมาส์เวอร์ชันอัปเดตซึ่งทดสอบบน tmux v3.1

เนื่องจากโค้ดเป็นแบบซับเดียวเพื่อให้สั้นฉันจึงใช้ t สำหรับชื่อตัวแปรและฉันแทนที่คำสั่ง if ด้วยการค้นหาตัวอักษร n แบบมีเงื่อนไข เงื่อนไขช่วยให้เราสามารถตัดช่องว่างและเครื่องหมายกึ่งทวิภาคจำนวนมากออกไปได้และทำให้เส้นสั้นลง

bind m run "[[ `tmux show -gv mou` = *n* ]]&&t=off||t=on;tmux set -g mou \$t;tmux display-message \"mouse mode: \$t\""

นี่คือข้อมูลโค้ดที่ขยายเป็นรูปแบบที่อ่านได้ง่ายขึ้น

[[ `tmux show -gv mouse` = *n* ]] && t=off || t=on
tmux set -g mouse $t
tmux display-message "mouse mode: $t"

-1

ฉันใช้การผูกต่อไปนี้เพื่อเลือกข้อความโดยกดปุ่มซ้ายของเมาส์ -

bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "/mnt/c/Windows/System32/clip.exe"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.