Jawaban:
Untuk mencari di tmux
buffer riwayat untuk jendela saat ini, tekan Ctrl- b [untuk masuk copy mode
.
Jika Anda menggunakan binding kunci emacs (default), tekan Ctrl- slalu ketik string untuk mencari dan tekan Enter. Tekan nuntuk mencari string yang sama lagi. Tekan Shift- nuntuk pencarian terbalik. Tekan Escapedua kali untuk keluar copy mode
. Anda dapat menggunakan Ctrl- runtuk mencari di arah sebaliknya. Perhatikan bahwa karena tmux
mengendalikan keyboard di copy mode
, Ctrl- sberfungsi terlepas dari stty ixon
pengaturan (yang saya ingin miliki stty -ixon
untuk mengaktifkan pencarian maju di Bash).
Jika Anda menggunakan binding kunci vi ( Ctrl- b:set-window-option -g mode-keys vi
), tekan /lalu ketik string untuk mencari dan tekan Enter. Tekan nuntuk mencari string yang sama lagi. Tekan Shift- nuntuk pencarian terbalik seperti dalam mode emacs. Tekan qdua kali untuk keluar copy mode
. Anda dapat menggunakannya ?untuk mencari ke arah sebaliknya.
Jika Anda ingin beralih ke jendela berdasarkan sesuatu yang ditampilkan di dalamnya (ini juga termasuk nama dan judul jendela tetapi bukan riwayat), (dimulai dengan lebih dari satu jendela terbuka) tekan Ctrl- b flalu ketik string yang akan dicari dan tekan Enter. Anda akan dialihkan ke jendela yang berisi teks itu jika ditemukan. Jika lebih dari satu jendela cocok, Anda akan melihat daftar untuk dipilih.
EDITOR
atau VISUAL
) ke gaya yang Anda inginkan sebelum memulai tmux
.
set-window-option -g mode-keys vi
di .tmux.conf
. Tapi saya ingin tahu tentang alternatif variabel lingkungan dan tidak bisa berfungsi. Apakah itu variabel lingkungan shell, atau variabel lingkungan tmux yang harus diatur dalam file conf?
VISUAL=vi tmux
Masuk ke mode salin dan mulai mencari dalam sekali jalan
bind-key / copy-mode \; send-key ?
memungkinkan Anda melakukan hal-hal berikut:
Ctrl + B /
dan mulai mengetik istilah pencarian.
Buang ke file dan gunakan vim
Ketika hal-hal lebih terlibat, saya hanya ingin menggunakan editor yang tepat: 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
Sekarang P
membuang buffer ke file, dan kemudian saya hanya:
vim /tmp/tmux
Diuji dalam tmux 2.6.
/tmp/tmux
)?
Anda dapat menggunakan vim untuk melihat / mengedit / mencari / menyimpan log layar, lipat log pada setiap bash prompt:
tmux capture-pane -pS -1000000 |
vim +":setl fen fdm=expr fde=getline(v:lnum)=~'^\\\\S\\+\\\\$\\\\s'?'>1':1" -
Sesuaikan regex sesuai permintaan Anda, gunakan empat backslash untuk setiap backslash di regex.
Atau letakkan fungsi vim di ~ / .vimrc:
command! MoshFoldTmuxLog :setl fen fdm=expr
\ fde=getline(v:lnum)=~'^\\S\\+\\$\\s'?'>1':1
Dan di ~ / .bashrc tambahkan tanggal ke prompt, jika Anda memiliki banyak log untuk dicari. misalnya
PS1='\u@\h:\w:\D{%F-%T}$?:\$ ' # user-host-pwd-date-time-errno
alias tmux-log='tmux capture-pane -pS -1000000 | vi +MoshFoldTmuxLog -'
Inilah solusi yang saya temukan.
Anda dapat memodifikasi jalur target dan nama file:
# 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'
Setelah memuat ulang file konfigurasi tmux Anda dapat menekan prefix p
dalam kasus saya Ctrl+a p
Anda dapat mengubah bind p
ke kombinasi tombol pilihan Anda.
Milik saya yang pertama tidak berfungsi karena saya menimpa bind p
di baris lain jadi saya hanya berkomentar saja.
tmux
(tmux -V
)? Saya percaya ini ditambahkan dalam versi 0.9.