Apa urutan awalan / melarikan diri yang paling tidak bertentangan untuk layar atau tmux?

93

Layar berjalan dengan Ctrl+ A. tmux di sisi lain — sebagaimana dikembangkan dalam layar — menggunakan Ctrl+ B. Kedua penekanan tombol, bagaimanapun, juga digunakan dalam editor, shell, dll. Dengan demikian memilih salah satu menurunkan pengalaman pengguna dan fungsionalitas dari alat-alat tersebut ketika digunakan dalam tmux atau layar.

Awalan apa yang paling sedikit konflik dengan ikatan kunci program dan shell lain?

Scott
sumber
6
"Konflik mana yang paling tidak dengan program lain?" tidak ada hubungannya dengan pendapat.
iconoclast
Setelah perubahan ~/.tmux.confjangan lupa untuk me-restart server tmux agar perubahan diterapkan ( superuser.com/q/188491/105108 ).
ks1322
Alternatif untuk menggunakan awalan: Beberapa terminal sekarang menawarkan integrasi tmux melalui "tmux -CC" (yaitu iTerm2 untuk macOS). Dengan begitu tmux windows muncul sebagai tab di terminal. Anda kemudian dapat menggunakan binding kunci untuk mengelola tab yang tidak bertentangan dengan program terminal apa pun, yaitu dengan menggunakan kunci cmd (alias kunci super, kunci windows).
cjay

Jawaban:

48

Saya pikir ^\(alias ^|) adalah yang terbaik jika berada pada posisi yang nyaman pada tata letak keyboard Anda. Penggunaannya dalam program lain sangat jarang:

  • mengirim SIGQUITke suatu proses
  • batalkan untuk atau sementara loop dalam shell ketika ^Cdicegat
  • toggle-input-method di emacs

Saya tidak tahu ada kegunaan lain. Berhati-hatilah untuk tidak secara tidak sengaja membunuh proses di luar tmuxatau screensetelah terbiasa. Itu terjadi pada saya hanya sekali dalam beberapa tahun.

~/.tmux.conf

unbind-key C-b
set -g prefix 'C-\'
bind-key 'C-\' send-prefix

~/.screenrc

escape ^|^|
cjay
sumber
Saya mencoba ini tetapi tmux mengeluh tentang penggunaan C-`. Can I escape the karakter `entah bagaimana?
Jason
2
Hanya untuk memberi tahu orang lain, Anda harus menulis 'C-\'alih-alih `C- \` dalam konfigurasi tmux.
gns-ank
2
Jangan lupa untuk 'tmux source-file /path/to/tmux.conf' ketika selesai untuk mencoba pengaturan baru
user72923
12
tetapi kemudian saya terbiasa dengan perintah itu, dan ketika saya lupa sedang berada di layar, saya mulai secara tidak sengaja mengirimkan SIGQUITs ...
Kache
3
"Jika berada pada posisi yang nyaman pada tata letak keyboard Anda" secara default tidak, apakah Anda menyiratkan bahwa ada beberapa pemetaan ulang populer yang Anda gunakan yang membuat C- \ nyaman?
storypixel
48

Bagi orang yang ingin menggunakan backtick sebagai pelarian di tmux, Anda ingin menambahkan:

unbind C-b
set -g prefix `
bind-key ` send-prefix

Yang terakhir itu penting, kalau tidak Anda tidak bisa mengetikkan backtick untuk keperluan lain :-)

Ned Ruggeri
sumber
Backtick sepertinya ide yang bagus sampai Anda menempelkan beberapa SQL ...
Synchro
3
@Synchro pada tmux 1.8 ini bukan masalah lagi berkat opsi menganggap-tempel-waktu yang diaktifkan secara default (disetel ke 1ms). Lihat di sini: sourceforge.net/p/tmux/tmux-code/ci/…
sickill
Saya menemukan pertanyaan ini mencari alternatif untuk backtick karena mulai menimbulkan masalah setelah saya terbiasa menggunakan backticks daripada $()di shell. Juga menjadi sakit setelah Anda mulai menulis banyak penurunan harga. Saya sudah menggunakannya selama beberapa tahun, tetapi sayangnya saya harus mengubahnya sekarang.
kirelagin
3
Di .tmux.conf saya juga punya bind-key C-a set-option -g prefix C-a. Setiap kali saya perlu menggunakan backticks saya tekan `-Ctrl-ayang menetapkan awalan saya C-a. Dan saya punya bind-key C-b set-option -g prefix `sehingga saya bisa menekan C-a-C-buntuk kembali
Boris
Bagaimana jika Anda menulis penurunan harga? Bagaimana Anda lolos dari awalan?
OJFord
21

Ctrl + A juga diketahui menyebabkan masalah dengan Emacs, termasuk Bash dalam mode Emacs. Sepertinya ini bukan masalah bagimu.

Ctrl + O adalah opsi lain yang pernah saya lihat. Kelihatannya, ini adalah default di RatPoison (ini adalah manajer window X yang tidak memerlukan mouse). Saya telah menggunakan Ctrl + O ketika menggunakan layar bersarang: Ctrl + O untuk layar luar dan Ctrl + A untuk layar bagian dalam. Bekerja dengan baik, tetapi agak membuat takut rekan-rekan saya. :-)

Saya hanya berpikir dan jika Anda menggunakan vi daripada Emacs, ada beberapa alternatif. Ctrl + G tidak banyak digunakan, misalnya.

ahli statika
sumber
7
Untuk pengguna Emacs Ctrl + O tampaknya menjadi pilihan terbaik: Di emacs itu hanya "buka baris baru di kursor" dan di bash "ulangi urutan perintah".
Aliran
2
+1 jika Anda OK dengan operasi ctrl tangan kanan, ini sepertinya cadangan yang bagus. Saya kidal sendiri ;-)
DaveParillo
9
Saya pikir Ctrl + O break vim
Mu Qiao
13
Saya setuju dengan @MuQiao. Ctrl-o digunakan di Vim untuk melompat ke posisi kursor yang lebih lama (setara dengan tombol kembali di banyak IDE), fitur yang saya gunakan sangat sering saat menelusuri kode di Vim. Ctrl-b identik dengan PageUp di Vim. Saya tidak menggunakan Ctrl-b sama sekali di Vim. Jadi untuk pengguna Vim seperti saya, Ctrl-b masih merupakan pilihan yang lebih baik daripada Ctrl-o. Saya menggunakan Cj sebagai kunci awalan saya karena Cj identik dengan j atau <Down> di Vim dan tidak ada yang menggunakan Cj untuk memindahkan satu baris ke bawah di Vim. Saya punya ini di ~ / .tmux.conf:set -g prefix2 C-j; bind-key C-j send-prefix -2
Susam Pal
C-jkonflik dengan CtrlP. Bergerak naik dan turun menggunakan daftar buffer C-kdan C-jmasing
blockloop
13

Saya sudah CAPS-LOCKdipetakan secara global ESC. Lalu, saya menggunakan M-Space(mis. CAPS-LOCK+ Space) Untuk awalan saya.

Kecepatan Nathan
sumber
Saya mencoba untuk melakukan ini tetapi jika saya memegang CAPS-LOCK(memikirkan perintah saya berikutnya atau sesuatu) tmux — atau iTerm, tidak yakin apa yang menyebabkan ini — menerima ESCperintah berulang kali menyebabkan M-Spacekemudian tidak berfungsi. Apakah ada cara untuk menonaktifkan masalah kunci yang berulang? Misalnya, ini berfungsi ketika saya dengan cepat menekan CAPS-LOCK + Space, tetapi tidak jika saya tahan CAPS-LOCKselama satu atau dua detik dan kemudian tekan Spaceitu tidak mendaftarkan M-Spaceakor ...
Bruno Ely
12

Saya menggunakan sistem yang kompleks untuk layar. Escape standar saya diatur ke \ 140 \ 140, yang merupakan backtick. Ctrl-A menyulitkan Emacs dan pengeditan baris perintah untuk saya dalam Zsh, dan saya tidak suka Ctrl-O (operasi 2 tangan untuk sebagian besar tindakan layar).

Saya memasang kembali layar 1 sehingga sesi baru dibuat dari kiri ke kanan pada keyboard mulai dari 1. Ini memungkinkan saya untuk memesan layar 0 untuk apa yang saya anggap sebagai jendela persisten atau referensi. Ini adalah gerakan satu tangan yang sangat cepat untuk (backtick) 1, (backtick) 2, (backtick) 3 untuk bertukar antar windows.

Masalah dengan menggunakan backtick di lingkungan unix adalah ketika mencoba untuk memotong dan menempelkan kode skrip shell / perl. Untuk alasan ini saya mengikat F11 / F12 untuk beralih di antara karakter pelarian saya.

bindkey -d -k F1        escape ^O^O # bound to F11
bindkey -d -k F2        escape \140\140 # bound to F12

Ini akan menukar pelarian ke Ctrl-O ketika saya melakukan operasi cut dan paste. Saya menemukan bahwa menekan tanda centang ganda adalah sederhana, dan merupakan pertukaran yang bagus untuk sebagian besar operasi layar.

Meninjau kembali jawaban ini dengan solusi yang lebih baru yang memungkinkan untuk beralih mode dengan menekan F12, dan menggunakan keterangan untuk menunjukkan mode.

## command characters
escape \140\140                 # default is `

## sets caption and escape toggle
bindkey -d -k F2 process a     # bound to F12

## initial caption
caption always '%{= kW}%?%F%{+b KW}%:%{= kK}%? %= %?%F%{-b .c}>>>%{-}%? | %-w%{mW}%n* %t%? @%u%?%{-}%+w '

## registers to toggle bindkeys
register a "\140:eval 'bindkey -d -k F2 process b' 'process c' 'escape \\017\\017'^M"
register b "\017:eval 'bindkey -d -k F2 process a' 'process d' 'escape \\140\\140'^M"

## registers to change captions
register c "\140:caption string '%{= kW}%?%F%{+b mW}%:%{= kK}%? %= %?%F%{.c}ALT%{-}%? | %-w%{KW}%n* %t%? @%u%?%{-}%+w '^M"
register d "\017:caption string '%{= kW}%?%F%{+b KW}%:%{= kK}%? %= %?%F%{.c}>>>%{-}%? | %-w%{mW}%n* %t%? @%u%?%{-}%+w '^M"
Darren Hall
sumber
Solusi kreatif. Saya terkesan.
Statika
bind-key -n F11 set -g awalan `bind-key -n F12 set -g awalan Co Pembaruan untuk tmux jika yang lain ingin mengadaptasi ini.
milkypostman
1
Apakah ada cara untuk mengatur semacam batas waktu minimal untuk awalan + other_key combo di tmux sehingga ketika menempelkan kode itu tidak memicu perintah apa pun tetapi ketika mengetik backtick + kunci dari keyboard itu terjadi karena jeda antara backtick dan tombol lainnya lebih lama ?
sickill
11

Saya menggunakan Ctrl-Qdi tmuxdan telah bekerja dengan baik sejauh ini. Saya harus menyebutkan, bahwa itu bertentangan dengan kontrol aliran shell. Secara default, Ctrl-Qdigunakan untuk mengaktifkan kembali output setelah menghentikannya Ctrl-S. Dikejutkan oleh cangkang macet beberapa kali setelah secara tidak sengaja mengenai Ctrl-S, saya belajar untuk tidak menekan Ctrl-S.

(Seseorang juga dapat mematikan kontrol aliran bersama stty -ixon, atau mengikat kunci berbeda ke stty startdan stty stop.)

# tmux.conf
unbind C-b
set -g prefix C-q
simonair
sumber
Saya sudah mengadopsi ikatan ini dan saya merasa sangat nyaman. Terima kasih!
aymericbeaumet
Favorit saya juga, karena saya selalu menonaktifkan hal-hal aliran kontrol terminal.
Jack O'Connor
2
Digunakan untuk emacs quote-inserted. Penggunaan sampel (dalam emacs): jika saya ingin mencari karakter tab berikutnya -<Ctrl-s>+<Ctrl-q>+<TAB>
nhed
6

Saya suka memesan ^Spaceuntuk operasi yang sangat khusus / umum karena saya menemukan itu menjadi awalan termudah untuk mengetik, tetapi saat ini saya sedang mencoba memetakannya sebagai prefixin tmux .

Ini membuat jari Anda bebas untuk langsung melompat ke perintah yang ingin Anda ketikkan. Cobalah.

teras
sumber
3
Itu tidak berlangsung lama - saya kembali ke ^ j. ^ Space terlalu mirip dengan perintah yang saya gunakan untuk menjalankan aplikasi level OSX (Spotlight, QuickSilver, DTerm).
teras
Saya menggunakan Cj juga. Inilah yang saya gunakan di ~ / .tmux.conf:set -g prefix2 C-j; bind-key C-j send-prefix -2
Susam Pal
1
Saya juga menggunakan C-Space, tidak digunakan hampir di tempat lain.
mahdix
1
C-space sangat cocok untuk saya, karena saya menggunakan Chromebook: D
Eric Nguyen
6

Saran terlambat: ctrl-s. ctrl-smemiliki sejumlah keunggulan:

  1. Di baris rumah.
  2. Masih dekat dengan ctrl-a(pada kenyataannya, untuk sebagian besar pengetik akan menggunakan dua jari yang sama yang mereka gunakan untuk ctrl-a), sehingga ingatan otot beralih dari ctrl-ake ctrl-ssepele - bagi saya, itu menjadi kebiasaan kedua dalam waktu sekitar satu jam pertama mencobanya.
  3. Membebaskan ctrl-auntuk operasi "kembali ke awal garis" gaya emacs atau "peningkatan jumlah" gaya-vim. Atau hei, untuk menjalankan layar di dalam panel tmux tanpa perlu khawatir akan keluar dari karakter awalan untuk mengontrol instance layar tertanam. (Saya sering melakukan ini menggunakan tmux lokal dengan panel yang berisi sesi ssh ke server jauh, di mana saya menjalankan layar)
  4. Tidak mengesampingkan atau menambahkan persyaratan pelarian ke fungsionalitas terminal lain yang biasa digunakan. tidak ada yang digunakan sebagian besar orang saat ini di ctrl-s!

Tentu saja, alasan bahwa tidak ada yang ada di ctrl-s adalah bahwa di terminal, itu secara tradisional digunakan untuk kontrol aliran, dating kembali ke hari-hari sebelum alat paging suka moredan lessumum. Saya yakin beberapa program terminal GUI di suatu tempat masih memiliki fungsi kontrol aliran diaktifkan secara default, tetapi saya belum benar-benar bertemu menjadi satu; program terminal gui yang telah saya coba semuanya tampaknya mengabaikannya secara default, yang membuat kombinasi tombol yang nyaman tersedia untuk penggunaan yang lebih produktif.

Jadi, jika Anda tidak benar-benar menggunakan layar / tmux dari dalam (misalnya) terminal Linux mentah, melainkan dari terminal berbasis GUI, maka saya sarankan ctrl-suntuk mencoba; itu membuat zip di tmux dan layar jauh lebih nyaman bagi saya.

Trevor Powell
sumber
4
Ctrl-s adalah pencarian maju, karena ketika saya pergi jauh dengan Ctrl-r :)
Jack O'Connor
Ctrl-S adalah umum untuk menghentikan keluaran konsol (alias "membekukan" nya). Ini menggigit saya ketika saya mencoba memetakannya kembali.
Dave
4

Saya pernah mendengar tentang `(backtick) yang digunakan dan kemudian Anda hanya perlu mengetiknya dua kali untuk backtick yang sebenarnya. Mungkin lebih baik bagi pengguna vi yang terbiasa dengan tindakan (kecuali jika Anda melakukan hal Caps lock).

bluehavana
sumber
Bagaimana Anda bisa mendefinisikan backtick untuk tmux?
Alexandre Nizoux
Sesuatu seperti: membuka ikatan Cb; set -g prefix ' '; bind '' send-prefix; lihat jawaban Darren Hall di atas.
bluehavana
Saya dengan backtick selama sekitar satu tahun dan saya tidak akan pernah kembali ke awalan dua kunci / kombo. Cobalah.
sickill
4

Kunci tanpa konflik mungkin C-z, karena biasanya digunakan untuk mengirim program ke latar belakang untuk melanjutkan hal lain pada shell yang memulai itu. Saya tidak melakukan ini ketika saya memiliki tmux.

Josuah Demangeon
sumber
Satu-satunya masalah yang saya miliki dengan menggunakan Cz adalah bahwa kebanyakan orang lain menggunakan Cb, jadi memori otot saya mati ketika memasangkan pemrograman pada mesin orang lain. Saya akhirnya harus menjalankan fgbanyak setelah salah mengetik Cz.
Steve Jorgensen
Pemikiran hebat tentang Cz adalah, dengan asumsi Anda tidak ingin menggunakan Ca, itu sangat dekat dengan tombol Ctrl kiri, yang merupakan satu-satunya kunci kontrol pada kebanyakan keyboard komputer notebook hari ini. Juga dekat dengan Caps Lock jika sudah dipetakan ke Ctrl. Saya memetakan Caps Lock ke Esc karena saya sering menggunakan keyboard Kinesis Freestyle Solo yang memiliki tombol Esc di tempat yang canggung.
Steve Jorgensen
4

Saya sarankan C-j, yang tidak banyak mengganggu vi atau emacs. Pada dasarnya, saya setuju dengan komentar dari Susam Pal, yang tampaknya layak muncul sebagai jawaban, karena yang lain tampaknya memiliki konflik yang signifikan dari sudut pandang saya.

Saya menggunakan Cj sebagai kunci awalan saya karena Cj identik dengan j atau di Vim dan tidak ada yang menggunakan Cj untuk memindahkan satu baris ke bawah di Vim. Saya memilikinya di ~ / .tmux.conf saya:

set -g prefix2 C-j; bind-key C-j send-prefix -2

nealmcb
sumber
1
Berdasarkan rekomendasi Anda, saya telah menggunakan Cj untuk sementara waktu dan satu-satunya konflik yang saya temukan adalah dengan plugin CtrlP vim. Cj dan Ck masing-masing digunakan untuk bergerak ke bawah dan ke atas.
blockloop
3

Untuk tata letak keyboard Programmer Dvorak, cukup rapi untuk menggunakan tombol minus (tanda hubung) sebagai awalan, yaitu ctrl+ -.
Kunci minus ada pada posisi kunci kutipan tunggal dalam tata letak qwerty. Saya juga telah membatasi fungsi kunci sebagai tombol ctrl. Berikut ini adalah tmux conf, untuk menetapkannya sebagai awalan:

unbind C-b
set -g prefix C-_
bind C-_ send-prefix
bind - last-window

Anda mungkin bertanya-tanya, mengapa garis bawah digunakan bukan minus? Lihat Tmux: bagaimana saya mengikat C— (kontrol-minus)?
Untuk qwerty, Anda mungkin menerapkan Bagaimana cara mengikat kunci awalan tmux ke C- '? solusi, untuk mempertahankan pintasan yang sama.

Saya akan mengatakan ini adalah awalan yang sempurna jika Anda menggunakan Vim / Neovim. Karena awalan, seperti ctrl+ aatau ctrl+ b, lakukan fungsi bayangan (tumpang tindih) Vim, dengan cara apa pun.

Vladimir Bauer
sumber
2

Secara pribadi, bterlalu jauh Ctrluntuk saya. Ketika saya menggunakan tmux, saya selalu mengubah pengikatan dari Cb ke Ca. Konflik utama dengan Ca adalah pilih semua, tetapi saya belum menemukan ini menjadi masalah dengan program yang saya gunakan tmux.

DaveParillo
sumber
memang, saya menggunakan default (di layar, tidak pernah mencoba tmux) dan belum menemukan kebutuhan untuk mengubahnya.
Quack quixote
2

Sebagai pengguna GNU emacs, zsh, dan MS Windows, saya menggunakan Control-T. (misalnya dalam .screenrc :)

melarikan diri "^ T ^ T"

Ya Control-T memiliki sesuatu yang terikat padanya, seperti menu pull down di aptitude Ubuntu, atau transpos karakter dalam Emacs.

Saya mengabaikan Co karena membutuhkan dua tangan untuk saya.

piyo
sumber
2

Saya pikir solusi terbaik adalah ^ C. Emacs menggunakan ^ C sebagai kunci awalan, dan saya menemukan bahwa ketika saya harus mengetikkan ^ C di shell saya hampir selalu mengetik dua. :-)

unbind-key C-b
set -g prefix C-c
bind-key C-c send-prefix
pengguna114905
sumber
1

Anda dapat menggunakan backtick. Beberapa versi tmux yang lebih lama tidak mendukung backtick, jadi Anda dapat melakukan hal berikut untuk menyelesaikannya (yang akan menambah C-`, C- @ dan C-space sebagai meta Anda pada saat yang bersamaan):

# meta prefix - @ - backtick
unbind C-b
set -g prefix C-@
bind C-@ send-prefix
bind C-@ last-window

Saya biasanya memetakan ulang CapsLock saya menjadi Ctrl, jadi itu lebih masuk akal dengan backtick.

Alex
sumber
Saya menggunakan ini juga. C-Space cukup mudah diketik.
kzh
Backtick cukup bagus. Namun ternyata tidak ramah terminal. Anda pasti tidak bisa salah dengan xterm di linux, tetapi terminal seperti putty dan iTerm2 (macos) memiliki masalah meniru dengan benar. Untungnya di iTerm2 Anda dapat mengatasinya dalam konfigurasi. Saya tidak menggunakan windows / dempul banyak, jadi ctrl-space tampaknya menjadi solusi yang layak. :)
Alex
1

Sebagian Jawaban di sini menggunakan Ctrl sebagai bagian dari kombinasi tombol.
Ketika saya menggunakan Ctrl, jari kelingking saya mulai terasa sakit karena saya selalu harus merentangkannya ke Ctrl.
Saya menggunakan Alt-jyang saya ketik dengan ibu jari kiri dan jari telunjuk kanan saya dan itu sangat nyaman. Saya juga belum menemukan tabrakan dengan program lain sejauh ini.

unbind C-b
set-option -g prefix M-j
wullxz
sumber
1

Untuk layar GNU, pemetaan backtick untuk keluar, berikut ini di ~ / .screenrc berfungsi untuk saya.

escape ``
pengguna1056720
sumber
0

Saya suka saran mengikat ctrl- \ sebagai awalan , tetapi untuk membuatnya bekerja di Linux Mint 12, saya harus melarikan diri dari tempat pengikatan di bagian bawah. Kalau tidak, tidak perlu. Lihat .tmux.conf saya di sini: Menggunakan tmux dengan emacs dan vim

justingordon
sumber
Harap jangan merujuk jawaban sebagai "di atas" dan "di bawah" karena pesanan dapat berubah. Tautkan jawabannya sebagai gantinya. Terima kasih atas jawaban Anda :)
Aliran
0

Saya pikir pengguna Mac akan merasa §lebih nyaman daripada backtick.

Pada keyboard non-Mac , backtick diposisikan pada tombol yang hampir sama dengan §pada keyboard Mac. Jadi, untuk mengalami kenyamanan yang sama dengan orang-orang yang menyarankan untuk menggunakan backtick, gunakan tanda paragraf pada keyboard Mac.

Menggunakan backtick pada keyboard Mac rumit karena terletak sangat dekat dengan shift kiri (⇧), (⌃), dan (⌥) tombol alt. Di MacBook bahkan di dekat tombol kiri fn.

berseni
sumber
Tentukan keyboard Mac ;-)
Arjan
Oke, Anda ada benarnya di sini, maksud saya tata letak keyboard Apple Mac AS, meskipun terlepas dari keyboard macbook lengkap.
nanitous