ikat tmux awalan ke kunci OS X cmd (atau ikatan lainnya)

21

Saya sudah terbiasa dengan iTerm2 (atau Terminal.app untuk kasus ini) di OS X. Tapi saya ingin pindah menggunakan tmux (atau layar, tetapi masalahnya mirip dengan kedua aplikasi).

Jadi ide saya adalah untuk memiliki satu tab ITerm dengan sesi tmux dibuka dengan banyak tab. Untuk melakukan transisi, saya memiliki fitur dasar yang perlu saya konfigurasi di tmux: alihkan tab 'n' dengan menggunakan cmd + n (seperti Firefox, Chrome, iTerm2 sendiri, dll)

Namun saya tidak dapat menemukan cara memetakan kunci cmd pada keyboard mac. Saya pertama kali mencoba menerapkan cmd sebagai kunci awalan, tanpa hasil. Saya sudah mencoba pengaturan

set-option -g prefix M-a (hoping for Meta-a)

set-option -g prefix ^a (hoping for ^ to work)

tapi tidak ada yang berhasil. Apakah ini mungkin? Saya tidak benar-benar perlu mengikat awalan ke cmd, tapi saya ingin dapat mengubah tab tmux dengan cmd + n.

Terima kasih

rubenfonseca
sumber
karabiner-elements memiliki ikatan khusus untuk tmux pqrs.org/osx/karabiner/complex_modifications/#modifier-keys
Fabrizio Bertoglio

Jawaban:

8

Anda ingin menjalankan urutan penekanan tombol (pertama Ctrl-b, lalu n mulai dari 0 hingga 9).

Taruhan terbaik Anda adalah dengan menggunakan utilitas pintasan keyboard seperti Butler atau Keyboard Maestro untuk melakukan ini untuk Anda.


Menggunakan Butler :

Pilih + »Item Cerdas» Tekan tombol, konfigurasikan tombol pintas Cmd-1 . Tekan Ctrl-B, lalu 1untuk penekanan tombol . Konfigurasikan agar hanya valid di Terminal (atau iTerm). Ini akan memperingatkan Anda bahwa aplikasi lain mungkin tidak menyukainya, tetapi Anda sudah tahu itu.


Menggunakan Keyboard Maestro :

Buat grup baru di sebelah kiri yang hanya tersedia di Terminal (atau iTerm).

Tambahkan item baru, dipicu oleh Hot Key Trigger ( Cmd-1) dan tambahkan dua penekanan tombol untuk tindakannya: Ctrl-Bdan 1.


Anda mungkin juga ingin melihat topik ini - Commandmeskipun tidak digunakan , dan tidak bekerja untuk saya menggunakan Terminal.


Dari dokumentasi tmux :

Bind key key to command. Kunci dapat ditentukan diawali dengan 'C-' atau 'ˆ' untuk kunci ctrl, atau 'M-' untuk kunci alt (meta). Bendera indicatesr menunjukkan kunci ini dapat diulang, lihat opsi pengulangan.

Mereka tidak mendukung kunci pengubah ketiga.

Daniel Beck
sumber
omg, retasan yang luar biasa! itu bekerja juga! menggunakan Keyboard Maestro karena Butler tampaknya berlebihan. Terima kasih!
rubenfonseca
Keyboard Maestro bekerja sangat baik untuk ini
Sam Selikoff
19

Di iTerm2, Anda dapat memetakan pintasan ke kode hex yang dapat dikirim ke terminal. Preferensi Goto iTerm2 -> Tombol. Di Global Shortcut Keys, klik + dan tambahkan ketik pintasan yang Anda inginkan seperti cmd + 1, yang akan ditangkap. Kemudian pilih "Kirim Kode Hex". Pada kotak yang muncul, ketikkan kode hex yang ingin Anda kirim ke tmux dipisahkan oleh spasi. Ctrl-B adalah 0x02, jadi untuk "Ctrl-B 1", ketik "0x02 0x31". Lihat di sini untuk kode hex lainnya: http://www.nthelp.com/ascii.htm

Saya memetakan Cmd dengan h, j, k, l untuk bergerak di antara panel tmux, dan Cmd dengan% dan "untuk membuat splits. Saya mungkin akan melakukan sesuatu yang mirip dengan memindahkan antara vim splits dengan satu kunci kontrol.

sesotek
sumber
Ini jelas merupakan jawaban terbaik bagi mereka yang menggunakan iTerm2. Terima kasih!
newUserNameHere
1
Untuk beberapa alasan, ini tidak berfungsi pada iTerm2 build 3.0.2 saya
jasonzhao
Jika ini tidak berhasil mungkin karena iTerm2 mengikat kunci cmd untuk beralih-tab secara default. Pengubah Anda mungkin berbenturan. Saya harus mengubah kunci tab swith ke opsi untuk
mengaktifkan
2

Pintasan khusus dapat dibuat dengan Terminal.app. Saya baru tahu beberapa hari yang lalu, tetapi ini mungkin terjadi sebelum singa.

Pergilah ke Preferensi> Pengaturan dan klik pada tab "Keyboard". Sekarang Anda perlu menambahkan pintasan keyboard baru dengan mengklik ikon plus di bawah kotak. Sekarang Anda ingin mengatur kombo kunci yang "Mengirim string ke shell."

Contoh: Misalkan saya ingin mengatur M-LeftArrow untuk dipetakan prefix-p(jendela sebelumnya).

Key: Left Arrow 
Modifier: Option 
Action: send string to shell

Sekarang cukup ketik prefix-pke dalam kotak input di mana prefixadalah apa pun yang Anda tetapkan untuk tmux (saya menggunakan cntrl-a sehingga kotak ditampilkan \001p). Perhatikan bahwa jika Anda melakukan kesalahan, hapus karakter akan dimasukkan alih-alih menghapus karakter yang sebenarnya, jadi tekan tombol "Hapus satu karakter" untuk bergerak mundur, jika Anda mengacaukannya.

Karakter khusus yang telah saya atur untuk membuat hidup lebih mudah:

M-Left  > Previous Window
M-Right > Next Window
M-Up    > Enter scrolling mode
M-Down  > Next Pane

Anda juga dapat memodifikasi cntrl-apapun dan menggeser-apa saja, tetapi ingatlah bahwa ini dapat mengganggu $ EDITOR Anda atau program lain, jadi berhati-hatilah tentang fungsi khusus apa yang mungkin dianggap tidak berguna.

Juga, perhatikan bahwa saya tidak tahu cara menduplikasi fungsi ini di iTerm2.

scicalculator
sumber
1

Anda mungkin juga ingin mempertimbangkan integrasi asli (tetapi sangat eksperimental) yang ditawarkan iTerm2 dengan tmux: http://code.google.com/p/iterm2/wiki/TmuxIntegration

Dengan begitu, ketika Anda menekan Cmd-D untuk membagi layar, iTerm2 akan membagi tab untuk Anda. Ini bagus, karena perpecahan adalah asli, sehingga Anda dapat menyeret tepi di tengah untuk menyesuaikan kembali lebar, atau Anda dapat memilih panel dengan mengklik. Ditto untuk tab / windows baru (tetapi pintasannya sedikit berbeda - jika tidak Anda tidak akan punya cara untuk menambahkan tab non-tmux).

Dan seperti tmux, jika Anda melepaskan dan memasang kembali, semuanya akan disimpan untuk Anda.

Ada dua peringatan: * ini adalah fitur yang sangat eksperimental dan sangat rentan bagi saya. * Anda harus membangun tmux sendiri (menggunakan arsip di suatu tempat di tautan di atas).

-Chris

Chris
sumber
Saya tahu ini sudah dua tahun, tapi ada ide apakah ini masih berfungsi? Saya mengikuti petunjuk di tautan Anda, tetapi cmd+Dmembelah panel iTerm2, bukan tmux.
Sam Selikoff
1
@SamSelikoff Anda harus memulainya tmux -CC.
jasonzhao
0

Anda juga dapat melihat posting blog ini yang memiliki penjelasan yang sangat rinci tentang integrasi tmux / iterm: http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/

Jérémie
sumber
2
Halaman web menghilang dan selalu dipindahkan. Harap setidaknya meringkas isi posting blog dan berikan rincian judul dan pengarangnya sehingga jawaban Anda tidak menjadi tidak berharga jika tautan rusak.
David Richerby