Todd Freed benar, cara "benar" untuk melakukan ini adalah menggunakan \;
. Semacam. Tapi ada halangan.
Anda lihat, Anda bergabung dengan urutan perintah tmux bersama dengan memberikan tmux konjungsi ;
. Dengan demikian, dalam file yang bersumber dari tmux, Anda mungkin mengatakan
new-session "monitor1" ; split-window -v "monitor2"
jika, karena suatu alasan, Anda menginginkan itu semua dalam satu jalur. Sekarang, Anda dapat memberikan bahwa satu-baris pernyataan majemuk dengan tmux
perintah dari shell juga tapi yang ;
harus melarikan diri sehingga menafsirkan shell sebagai argumen lain untuk tmux
. Jadi, yang setara dengan yang di atas dari shell adalah
$ tmux new-session "monitor1" \; split-window -v "monitor2"
Demikian pula, bind-key
perintah tmux mengambil serangkaian argumen yang merupakan perintah tmux dan argumen untuk dijalankan ketika tombol ditekan. Jika Anda ingin mengikat C-q
urutan di atas dari dalam file yang bersumber dari tmux, Anda akan mengatakannya
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
Di sini kita telah lolos ;
dari tmux , sehingga tmux tidak menafsirkannya sebagai akhir dari bind-key
perintah, tetapi sebagai argumen lain untuk bind-key
mengatakannya untuk membentuk perintah majemuk sebagai nilai terikat C-q
kunci.
Jadi apa yang terjadi ketika kita ingin membuat tmux melakukan itu dari shell? Banyak yang melarikan diri.
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
Pertama, kita harus melarikan diri \
dan;
masing - masing dari shell , menyebabkan shell untuk melewati dua karakter \;
sebagai argumen tmux
. Ini kemudian lolos ;
dari tmux, menyebabkannya menetapkan seluruh pernyataan majemuk sebagai pengikatan C-q
.
Sekarang, semua yang dikatakan, jika Anda menggunakan pengaturan tmux yang kompleks seperti ini berulang kali, saya sarankan Anda membuat file tmux untuk menyimpannya di:
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
Lalu:
$ tmux source split-windows.tmux # (or even make an alias for this)
Akan jauh lebih mudah untuk mempertahankannya.
\;
:$ tmux bind-key -n C-q new-session "monitor1" '\;' split-window -v "monitor2"
Jadi jawaban sebenarnya adalah: Anda mem-chain perintah dengan backslash diikuti dengan tanda titik koma.
Anda akan meletakkannya di tmux.conf Anda, atau jalankan dari tmux ":" prompt
sumber
Anda dapat melakukan ini dengan solusi kecil. Mirip dengan jawaban yang menyarankan skrip untuk dijalankan (yang menangani kasus Anda dengan baik), umumnya dapat dilakukan dengan menggunakan "run-shell" dan memanggil tmux sendiri sebagai perintah shell.
yang akan mengirim kunci 'xyz', tmux perintah 'clear-history', dan kemudian memanggil builtin 'clear' shell.
Seluruh string hanyalah urutan perintah beberapa shell.
sumber
Anda dapat menambahkan sesuatu seperti ini ke binding utama ke
.tmux.conf
file Anda :Dan di dalam
tmux-new-session.sh
kamu dapat memiliki:sumber
Semua yang ditampilkan di sini tidak akan berfungsi, karena ini
akan menjalankan command2 segera dan q akan diikat hanya untuk mengirim-kunci "command1"
Inilah solusinya:
Dalam file ~ / .tmux / reload.tmux masukkan beberapa perintah seperti:
sumber