คำตอบ:
ต้องการค้นหาในtmux
บัฟเฟอร์ประวัติศาสตร์หน้าต่างปัจจุบันกดCtrl- เพื่อป้อนb [copy mode
หากคุณกำลังใช้ emacs ปุ่มลัด (เริ่มต้น) กดCtrl- จากนั้นพิมพ์สตริงเพื่อค้นหาและกดs Enterกดnเพื่อค้นหาสตริงเดิมอีกครั้ง กดShift- nเพื่อค้นหาแบบย้อนกลับ กดสองครั้งเพื่อออกจากEscape copy mode
คุณสามารถใช้Ctrl- rเพื่อค้นหาในทิศทางย้อนกลับ ทราบว่าตั้งแต่tmux
อยู่ในการควบคุมของแป้นพิมพ์ในcopy mode
, Ctrl- sทำงานโดยไม่คำนึงถึงstty ixon
การตั้งค่า (ซึ่งผมชอบที่จะได้เป็นstty -ixon
เพื่อเปิดใช้งานไปข้างหน้าในการค้นหาทุบตี)
หากคุณกำลังใช้ผูกที่สำคัญ vi ( Ctrl- b:set-window-option -g mode-keys vi
) กดแล้วพิมพ์สตริงเพื่อค้นหาและกด/ Enterกดnเพื่อค้นหาสตริงเดิมอีกครั้ง กดShift- nเพื่อค้นหาแบบย้อนกลับเช่นเดียวกับในโหมด emacs กดสองครั้งเพื่อออกจากq copy mode
คุณสามารถใช้?เพื่อค้นหาในทิศทางย้อนกลับ
หากคุณต้องการที่จะเปลี่ยนไปยังหน้าต่างขึ้นอยู่กับสิ่งที่ปรากฏอยู่ในนั้น (นี้ยังรวมถึงชื่อหน้าต่างและชื่อ แต่ไม่ประวัติ), (เริ่มต้นด้วยมากกว่าหนึ่งหน้าต่างเปิด) กดCtrl- จากนั้นพิมพ์สตริงเพื่อค้นหาและกดb f Enterคุณจะเปลี่ยนเป็นหน้าต่างที่มีข้อความนั้นหากพบ หากมีมากกว่าหนึ่งหน้าต่างตรงกันคุณจะเห็นรายการให้เลือก
EDITOR
หรือVISUAL
) tmux
กับรูปแบบที่คุณต้องการก่อนที่จะเริ่ม
set-window-option -g mode-keys vi
.tmux.conf
แต่ฉันอยากรู้เกี่ยวกับทางเลือกตัวแปรสภาพแวดล้อมและไม่สามารถใช้งานได้ มันเป็นตัวแปรสภาพแวดล้อมของเชลล์หรือตัวแปรสภาพแวดล้อม tmux ที่ต้องตั้งค่าในไฟล์ conf หรือไม่?
VISUAL=vi tmux
เข้าสู่โหมดคัดลอกและเริ่มค้นหาในครั้งเดียว
bind-key / copy-mode \; send-key ?
ช่วยให้คุณทำเพียงแค่:
Ctrl + B /
และเริ่มพิมพ์ข้อความค้นหา
ดัมพ์เป็นไฟล์และใช้เป็นกลุ่ม
เมื่อสิ่งต่าง ๆ มีส่วนร่วมมากขึ้นฉันแค่ต้องการใช้เครื่องมือแก้ไขที่เหมาะสม: https://unix.stackexchange.com/questions/26548/write-all-tmux-scrollback-to-a-file
bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
ตอนนี้P
ทิ้งบัฟเฟอร์ไปยังไฟล์แล้วฉันก็:
vim /tmp/tmux
ทดสอบใน tmux 2.6
/tmp/tmux
)?
คุณสามารถใช้เสียงเรียกเข้าเพื่อดู / แก้ไข / ค้นหา / บันทึกล็อกหน้าจอพับล็อกที่แต่ละการแจ้งเตือนทุบตี:
tmux capture-pane -pS -1000000 |
vim +":setl fen fdm=expr fde=getline(v:lnum)=~'^\\\\S\\+\\\\$\\\\s'?'>1':1" -
ปรับ regex ตามคำแนะนำของคุณใช้แบ็กสแลชสี่รายการสำหรับแต่ละแบ็กสแลชใน regex
หรือใส่ฟังก์ชั่นเป็นกลุ่มใน ~ / .vimrc:
command! MoshFoldTmuxLog :setl fen fdm=expr
\ fde=getline(v:lnum)=~'^\\S\\+\\$\\s'?'>1':1
และใน ~ / .bashrc เพิ่มวันที่ในพรอมต์หากคุณมีบันทึกจำนวนมากเพื่อค้นหา เช่น
PS1='\u@\h:\w:\D{%F-%T}$?:\$ ' # user-host-pwd-date-time-errno
alias tmux-log='tmux capture-pane -pS -1000000 | vi +MoshFoldTmuxLog -'
นี่เป็นวิธีแก้ปัญหาที่ฉันพบ
คุณสามารถปรับเปลี่ยนพา ธ เป้าหมายและชื่อไฟล์ได้เช่นกัน:
# Save screen content to file
bind p command-prompt -p 'Save history to:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'
หลังจากโหลดไฟล์ tmux config อีกครั้งคุณสามารถกดprefix p
ในกรณีของฉันCtrl+a p
คุณสามารถเปลี่ยนbind p
เป็นชุดคีย์ที่คุณต้องการ
ฉันคนแรกไม่ทำงานเพราะฉันเขียนทับbind p
ในอีกบรรทัดหนึ่งดังนั้นฉันจึงแสดงความคิดเห็นออกมา
tmux
(tmux -V
)? ฉันเชื่อว่านี่ถูกเพิ่มเข้ามาในเวอร์ชั่น 0.9