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?


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 ^|^|

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 :-)


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.


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.


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"

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

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.


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.


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).


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.


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


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.


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.


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.


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


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.


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

1

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

escape ``


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.