Tambahkan ini ke ~/.tmux.conf
Anda :
set-option -g default-shell /bin/bash
unbind Up
unbind Down
unbind Right
unbind Left
bind Up run-shell "if [ $(tmux display-message -p '#{pane_at_top}') -ne 1 ]; then tmux select-pane -U; fi"
bind Down run-shell "if [ $(tmux display-message -p '#{pane_at_bottom}') -ne 1 ] ; then tmux select-pane -D; fi"
bind Right run-shell "if [ $(tmux display-message -p '#{pane_at_right}') -ne 1 ]; then tmux select-pane -R; fi"
bind Left run-shell "if [ $(tmux display-message -p '#{pane_at_left}') -ne 1 ]; then tmux select-pane -L; fi"
Pada dasarnya, ini harus dijalankan dengan tmux versi 2.6 + (setelah itu mereka menambahkan variabel lingkungan pane_at_top, pane_at_bottom, pane_at_left, pane_at_right. Untuk tmux
Lebih jauh lagi, jika Anda ingin meluncurkan custom-shell, lakukan melalui set-option -g default-command fish
(atau zsh atau csh atau apa pun). Sebagai alternatif, jika Anda ingin menggunakan shell non-bash sebagai shell default tmux Anda, atur seperti itu (set-option -g default-shell
) dan kemudian Anda dapat membuat kode logika di atas dalam skrip Shell pilihan Anda. Namun, (seperti dalam kasus saya) menggunakan shell tertentu tidak memberi Anda kenyamanan one-liner jika perintah (atau mungkin saja saya tidak cukup tahu tentang shell tertentu, atau mungkin beberapa baris berfungsi di run- cangkang.
Sumber:github Masalah utas yang saya mulai
Terima kasih kepada Gilgamesh Skytrooper karena memposting masalah ini di github. Ini adalah versi sederhana yang dapat bekerja dengan beberapa sesi dan tidak memerlukan subproses shell.
bind -n M-a if -F '#{pane_at_left}' '' 'select-pane -L'
bind -n M-d if -F '#{pane_at_right}' '' 'select-pane -R'
bind -n M-w if -F '#{pane_at_top}' '' 'select-pane -U'
bind -n M-s if -F '#{pane_at_bottom}' '' 'select-pane -D'
Hapus -n
jika Anda ingin menekan awalan (C-b
) terlebih dahulu, dan ubah binding M-[awds]
sesuai keinginan Anda.