Ekran veya tmux için en az çakışan önek / kaçış dizisi nedir?


96

Ekran Ctrl+ ile gider A. Öte yandan, tmux - ekran içinde geliştirildiği gibi - Ctrl+ kullanır B. Ancak her iki tuş vuruşu da editörlerde, mermilerde vb. Kullanılır.

Hangi ön ek, en az diğer programların ve kabukların tuş bağlamaları ile çakışıyor?


6
"hangisi en az diğer programlarla çelişiyor?" görüş ile ilgisi yok.
iconoclast

~/.tmux.confDeğiştirdikten sonra , değişikliklerin etkili olması için tmux sunucusunu yeniden başlatmayı unutmayın ( superuser.com/q/188491/105108 ).
ks1322

Bir ön ek kullanmanın alternatifi: Bazı terminaller artık "tmux -CC" üzerinden tmux entegrasyonu sunmaktadır (yani, macOS için iTerm2). Bu şekilde tmux pencereler terminalde sekmeler olarak görünür. Ardından herhangi bir terminal programla çakışmayan sekmeleri yönetmek için, yani cmd tuşunu (diğer bir deyişle süper anahtar, windows tuşunu) kullanarak anahtar bağlarını kullanabilirsiniz.
cjay,

Yanıtlar:


48

Klavye düzeninizde uygun bir konumdaysa bence ^\(aka ^|) en iyisidir. Diğer programlarda kullanımı oldukça nadirdir:

  • SIGQUITbir sürece göndermek
  • ^Cyakalandığında kabuktaki döngüler için veya bu süre zarfında iptal edildiğinde
  • toggle-input-method emacs içinde

Başka bir kullanım bilmiyorum. Yanlışlıkla tmuxveya screenalıştıktan sonra bir işlemi yanlışlıkla öldürmemeye dikkat edin . Birkaç yılda sadece bir kez başıma geldi.

~/.tmux.conf

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

~/.screenrc

escape ^|^|

Bunu denedim ama tmux bir C-`. Can I escape the şekilde karakterin kullanılmasından şikayet ediyor ?
Jason,

2
Sadece başkalarının bilmesini sağlamak için, 'C-\'tmux config içinde 'C- \' yerine yazmalısınız .
gns-ank

2
Yeni ayarları denemek için bittiğinde 'tmux source-file /path/to/tmux.conf'
yazmayı

12
ama sonra bu emri alışkanlık haline getiriyorum ve ekrandan olduğumu unuttuğumda, yanlışlıkla SIGQUIT'leri göndermeye başlıyorum ...
Kache

3
"klavye düzeninizde uygun bir konumdaysa" varsayılan olarak değil, kullandığınız bazı popüler remeplerin bulunduğunu ima ediyor musunuz?
storypixel

53

Tmux'taki kaçış olarak backtick kullanmak isteyenler için şunu eklemek istersiniz:

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

Bu sonuncusu önemlidir, başka bir amaç için bir backtick yazamazsınız :-)


Bazı SQL'e yapıştırıncaya kadar Backtick iyi bir fikir gibi görünüyor ...
Synchro

3
Tmux 1.8'deki @Synchro, varsayılan olarak açık olan varsayım yapıştırma zamanı seçeneği sayesinde artık sorun değil (1ms'ye ayarlanmış). Buraya bakın: sourceforge.net/p/tmux/tmux-code/ci/…
sickill

Bu soruyu $(), mermi yerine backticks kullanmaya alıştıktan sonra sorun çıkarmaya başladığı için backtick'e alternatifler ararken buldum . Ayrıca çok fazla Markdown yazmaya başladığınızda bir acıya dönüşür. Birkaç yıldan beri kullanıyorum, fakat ne yazık ki şimdi değiştirmek zorunda kalacağım.
kirelagin

4
.Tmux.conf içinde de sahibim bind-key C-a set-option -g prefix C-a. Ne zaman backtick kullanmam gerekiyorsa, önekimi `-Ctrl-aayarlayana çarptım C-a. Ve ben de geri dönmek için bind-key C-b set-option -g prefix `vurabilirimC-a-C-b
Boris

Ya markdown yazıyorsan? Önekten nasıl kaçarsınız?
OJFord

21

Ctrl + A'nın Emacs modunda Bash dahil olmak üzere Emacs ile ilgili sorunlara yol açtığı da bilinmektedir. Bu sizin için bir sorun değil gibi geliyor.

Ctrl + O gördüğüm diğer seçenektir. Açıkçası, bu RatPoison'da varsayılandır (fareye ihtiyaç duymayan bir X pencere yöneticisidir). Yuvalanmış ekranlar kullanırken Ctrl + O kullandım: Dıştakiler için Ctrl + O ve içtekiler için Ctrl + A. İyi çalıştı ama meslektaşlarımı korkuttu. :-)

Sadece düşünüyordum ve eğer Emacs yerine vi kullanıyorsanız, birkaç alternatif var. Ctrl + G, örneğin, çok fazla kullanılmaz.


8
Emacs kullanıcıları için Ctrl + O en iyi seçim gibi gözüküyor: emacs'de sadece "imleçte yeni bir satır aç" ve bash "komut dizisini tekrarla" dır.
Akış

2
+1 sağ elle çalıştırılan ctrl işlemlerinde sorun yok ise, bu iyi bir yedekleme gibi görünüyor. Ben kendimde bir
solum

9
Sanırım Ctrl + O vim'i kırar
Mu Qiao

14
@MuQiao ile aynı fikirdeyim. Vtr'de Ctrl-o, eski bir imleç konumuna atlamak için kullanılır (birçok IDE'de geri düğmesine denk gelir), Vim'de kod gezinirken çok sık kullandığım bir özellik. Ctrl-b, Vim'deki PageUp ile eşanlamlıdır. Ctrl-b'yi Vim'de hiç kullanmıyorum. Yani benim gibi Vim kullanıcıları için, Ctrl-b hala Ctrl-o'dan daha iyi bir seçimdir. Cj'yi önek anahtarım olarak kullanıyorum çünkü Cj, Vim'de j veya <Down> ile eşanlamlıdır ve hiç kimse Vim'de bir satır aşağı gitmek için Cj'yi kullanmaz. Bunu ~ / .tmux.conf:set -g prefix2 C-j; bind-key C-j send-prefix -2
Susam Pal

C-jCtrlP ile çakışıyor. Tampon listesinde yukarı ve aşağı hareket etme, sırasıyla C-kve kullanırC-j
blockloop

14

Elimdeki CAPS-LOCKküresel eşlenen ESC. Sonra ön ekim için M-Space(yani CAPS-LOCK+ Space) kullanıyorum.


Bunu yapmaya çalışıyorum ama CAPS-LOCKtutarsam (bir sonraki komutumu veya başka bir şeyi düşünürsem ) tmux - veya iTerm, buna neden olandan emin değilsem - ESCsürekli olarak M-Spaceçalışmamaya neden olan komutu alır . Bu yinelenen kilit sorunu devre dışı bırakmanın bir yolu var mı? Mesela hızlıca bastığımda çalışıyor CAPS-LOCK + Space, fakat CAPS-LOCKbir saniye kadar basılı tutarsam ve ardından akoru Spacekaydetmiyorsa M-Space...
Bruno Ely

12

Ekran için karmaşık bir sistem kullanıyorum. Varsayılan kaçışım backtick olan \ 140 \ 140 olarak ayarlanmış. Ctrl-A, Zsh içinde benim için düzenleme yapan hem Emac'leri hem de komut satırını zorlaştırıyor ve Ctrl-O'dan (çoğu ekran eylemleri için 2 el işlemi) hoşlanmıyorum.

Ekranı 1'e yeniden bağlarım, böylece 1'den başlayarak klavyede soldan sağa yeni oturumlar oluşturulur. Bu, kalıcı veya referans pencereleri olarak düşündüklerim için ekran 0'ı ayırmamı sağlar. Pencereler arasında geçiş yapmak için (backtick) 1, (backtick) 2, (backtick) 3'e çok hızlı bir el hareketi uygulanır.

Bir unix ortamında backtick kullanımı ile ilgili sorun, kabuk / perl betiği kodunu kesip yapıştırmaya çalışmaktır. Bu nedenle kaçış karakterim arasında geçiş yapmak için F11 / F12 tuşlarına bindim.

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

Bu kaçış ve yapıştırma işlemleri yaparken kaçış Ctrl-O ile değiştirecek. Çifte kene vurmanın basit olduğunu ve çoğu ekran işlemi için iyi bir işlem yaptığını gördüm.

Bu cevabı, F12 tuşuna basarak modu değiştirmeye izin veren ve modu belirtmek için bir başlık kullanarak daha yeni bir çözümle tekrar gözden geçirme.

## 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"

Yaratıcı çözüm Etkilendim.
staticsan

bind-key -n F11 set -g ön ek `bind-key -n F12 set -g ön ek Co Başkalarının uyarlamak istemesi durumunda tmux için güncellemeler.
milkypostman

1
Tmux'da prefix + other_key combo için minimum zaman aşımı türünü ayarlamanın bir yolu var mı? Kod yapıştırırken herhangi bir komutu tetiklemiyor, ancak klavyeden backtick + tuşunu yazarken backtick ile diğer tuş arasındaki duraklamanın daha uzun olması nedeniyle ?
sickill

11

Kullandığım Ctrl-Qiçinde tmuxve şimdiye kadar işe yaradı. Bununla birlikte, kabuk akış kontrolü ile çakıştığını söylemeliyim. Varsayılan olarak, Ctrl-Qçıkışı durdurduktan sonra yeniden etkinleştirmek için kullanılır Ctrl-S. Yanlışlıkla vurulduktan birkaç kez sonra sıkışmış bir kabuk tarafından şaşırıp Ctrl-Skalmamasını, baskı yapmamayı öğrendim Ctrl-S.

(Biri de akış kontrolünü tamamen ile kapatabilir stty -ixonveya farklı anahtarlara stty startve ile bağlayabilir stty stop.)

# tmux.conf
unbind C-b
set -g prefix C-q

Bu bağlama kabul ettim ve çok uygun buluyorum. Teşekkürler!
aymericbeaumet 23:13

Benim de favorim, çünkü terminal kontrol akışını her zaman devre dışı bırakıyorum.
Jack O'Connor,

2
İçin emacs kullanılır quote-inserted. Örnek kullanım (emacs <Ctrl-s>+<Ctrl-q>+<TAB>
cinsinden

6

^SpaceÇok özel / ortak işlemler için ayırmayı seviyorum, çünkü yazması en kolay önek olarak buluyorum, ancak şu anda prefixin tmux olarak eşleştirmeye çalışıyorum .

Yazmak istediğiniz komuta anında geçmek için parmaklarınızı serbest bırakır. Bir şans ver.


3
Bu uzun sürmedi - ^ j'ye geri döndüm. ^ Boşluk, OSX düzeyinde uygulamaları çağırmak için kullandığım komutlara çok benzer (Spotlight, QuickSilver, DTerm).
teras

Ben de Cj kullanıyorum. Bu benim ~ / .tmux.conf dosyasında kullandığım şey:set -g prefix2 C-j; bind-key C-j send-prefix -2
Susam Pal

1
Ayrıca C-Space kullanıyorum, neredeyse başka hiçbir yerde kullanılmıyor.
mahdix

1
C-space benim için mükemmel, çünkü Chromebook'tayım: D
Eric Nguyen

6

Gecikmiş bir öneri: ctrl-s. ctrl-sbir takım avantajlara sahiptir:

  1. Ana sırada.
  2. Yine yakın ctrl-a(aslında, en typers için onlar için kullanılan aynı iki parmak kullanacaktır ctrl-akas hafızası anahtarı böylece) ctrl-aiçin ctrl-sönemsiz olduğunu - benim için, onu çalışırken ilk bir saat içinde ikinci doğa haline geldi.
  3. Boşaltır ctrl-a"geri satırın başına kadar" ya da vim tarzı "artım numarası" operasyonları emacs-tarzı için. Veya hey, gömülü ekran örneğini kontrol etmek için kaçış önek karakterleri hakkında endişelenmenize gerek kalmadan bir tmux bölmesinde ekranı çalıştırmak için. (Bunu genellikle ekranları çalıştırdığım uzak sunuculara ssh oturumları içeren bölmeleri olan yerel bir tmux kullanarak yapıyorum)
  4. Yaygın olarak kullanılan diğer herhangi bir terminal işlevine kaçma gereksinimlerini geçersiz kılmaz veya eklemez. Bugün insanların çoğunluğunun kullandığı hiçbir şey ctrl-s'de değil!

Elbette, hiçbir şeyin ctrl-s'de bulunmamasının nedeni, terminalde, geleneksel olarak, çağrı araçları gibi moreve lesssık kullanılan sayfalardan önceki günlere dayanan akış kontrolü için kullanılmasıdır . Bazı yerlerde bir GUI terminal programının hala varsayılan olarak etkin olan bu akış kontrol fonksiyonelliğine sahip olduğundan eminim, ancak aslında bir tanesine girmedim; Hepsini denediğim gui terminal programları varsayılan olarak tamamen yok sayılıyor gibi görünüyor, bu da daha verimli kullanımlar için uygun tuş kombinasyonunu mümkün kılıyor.

Eğer ekran / tmux'u aslında ham bir Linux terminalinin içinden (örneğin) kullanmıyorsanız, GUI tabanlı bir terminalden kullanıyorsanız, ctrl-sdenemeyi öneririm ; Bu tmux ve ekran benim için çok daha uygun sıkma yaptı.


4
Ctrl-s ileri, Ctrl-r :) ile çok uzaklara gittiğimde :)
Jack O'Connor

Ctrl-S konsol çıkışını durdurmak için yaygındır (aka "dondurma"). Yeniden ısırmaya çalıştığımda bu beni ısırdı.
Dave

5

Çatışmasız bir anahtar C-z, genellikle programı başlatan kabuktaki başka bir şeye devam etmek için programı arka plana göndermek için kullanılır. Bunu tmux yaparken yapmam.


Cz kullanmakta yaşadığım tek sorun, diğer insanların çoğunun Cb kullanmasıdır, bu yüzden başkasının makinesinde çift programlanırken kas hafızam kapalıdır fg. Hatalı olarak Cz yazdıktan sonra çok çalışmak zorunda kalırım.
Steve Jorgensen

Cz hakkındaki harika düşünce, Ca'yı kullanmak istemediğinizi farz edersek, bugünlerde çoğu dizüstü bilgisayar klavyesindeki tek kontrol anahtarı olan sol Ctrl tuşuna yakın. Ctrl ile eşleştirdiyseniz, ayrıca Caps Lock'a da yakın. Caps Lock'umu Esc ile eşlerim, çünkü genellikle garip bir yerde Esc tuşu olan bir Kinesis Freestyle Solo klavye kullanıyorum.
Steve Jorgensen

4

Kullanıldığını duydum (ve geriye doğru) ve sonra gerçek bir geri dönüş için iki kez yazmanız gerekir. Aksiyona alışmış olan vi kullanıcıları için daha iyi olabilir (Caps Lock özelliğini yapmazsanız).


Tmux için backtick'i nasıl tanımlayabilirsiniz?
Alexandre Nizoux,

Gibi bir şey: Cb unbind; set -g ön eki ' '; bind '' gönderim öneki; Darren Hall'ın cevabını yukarıda gör.
bluehavana

Yaklaşık bir senedir backtick'leyim ve asla iki-anahtar / combo önekine geri dönmeyeceğim. Bir şans ver.
sickill

4

Bence C-jvi veya emacs ile fazla etkileşime girmez. Esasen Susam Pal'un cevap olarak görünmeye değer görünen bir yorumuna katılıyorum, çünkü diğerleri benim açımdan ciddi çatışmalar yaşıyor gibi görünüyor.

Cj, j veya Vim ile eşanlamlı olduğundan ve hiç kimse Cim'i Vim'de bir satır aşağı taşımak için Cj'yi kullanmadığından önek anahtarım olarak kullanıyorum. Bunu ~ / .tmux.conf dosyasında bulabilirsiniz:

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


1
Tavsiyenize göre, bir süredir Cj kullanıyorum ve bulduğum tek çelişki CtrlP vim eklentisiyle. Cj ve Ck, sırasıyla seçenekleri aşağı ve yukarı hareket ettirmek için kullanılır.
blockloop

3

Programcı Dvorak klavye düzeni için, eksi (çizgi) tuşunu önek olarak kullanmak çok güzel, yani ctrl+ -.
Eksi anahtarı qwerty düzeninde tek bir teklif anahtarı konumunda. Ayrıca, tuş kilidi işlevini bir ctrl tuşu olarak da kullandım. Bir önek olarak ayarlamak için bir tmux conf aşağıdadır:

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

Neden eksi yerine alt çizgi kullanıldığını merak edebilirsiniz. Tmux'a bakın : C - 'ye (kontrol-eksi) nasıl bağlarım?
Qwerty için başvurabilirsiniz: tmux önek anahtarını C- 'ye nasıl bağlarım? çözüm, aynı kısayolu korumak için.

Vim / Neovim kullanıyorsanız, bunun mükemmel bir önek olduğunu söyleyebilirim. Çünkü, ctrl+ aveya ctrl+ gibi önekler, bVim'in işlevselliğini her iki şekilde de yapar (örtüşür).


2

Şahsen, benim için bçok uzak Ctrl. Tmux kullandığımda, bağlayıcıyı her zaman Cb'den Ca'ya değiştiririm. Ca ile ana çatışmanın hepsi seçtiği, ancak bunu tmux kullandığım programlarla ilgili bir sorun olarak bulamadım.


Gerçekten de, varsayılanı (ekranda, asla tmux denemedim) kullandım ve henüz değiştirme gereği bulamadım.
quix quixote

2

Bir GNU emacs, zsh ve MS Windows kullanıcısı olarak Control-T kullanıyorum. (örneğin .screenrc :)

kaçış "^ T ^ T"

Evet Control-T, Ubuntu'nun yeteneğindeki açılır menü ya da Emacs'daki karakter değiştirme gibi, kendisine bağlı bir şeye sahiptir.

Co'yu göz ardı ettim, çünkü benim için iki el gerektiriyor.


2

Bence en iyi çözüm ^ C. Emacs ^ C'yi önek anahtarı olarak kullanır ve şunu buldum ki bir kabuğa ^ C yazmam gerektiğinde neredeyse her zaman iki tane yazarım. :-)

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


1

Backtick'i kullanabilirsiniz. Tmux'un bazı eski sürümleri backtick'i desteklemez, bu nedenle geçici çözümü gidermek için aşağıdakileri yapabilirsiniz (bu, C-`, C- @ ve C-alanını aynı anda meta'nuzla ekler):

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

Normalde CapsLock'ımı Ctrl'ye yeniden eşlerim, böylece backtick ile daha da mantıklı olur.


Bunu da kullanıyorum. C-Space'in yazılması oldukça kolaydır.
kzh

Geri tepme oldukça iyi. Ancak ortaya çıktığı gibi terminal dostu değil. Linux'ta xterm ile kesinlikle yanlış gidemezsiniz, ancak macun ve iTerm2 (macos) gibi terminallerin uygun şekilde taklit ettiği sorunlar var. Neyse ki iTerm2'de konfigürasyonda geçici olarak çözümleyebilirsiniz. Çok fazla pencere / macun kullanmıyorum, bu yüzden ctrl-space uygun bir geçici çözüm gibi görünüyor. :)
Alex

1

Buradaki çoğu cevap, tuş kombinasyonunun bir parçası olarak Ctrl kullanır.
Ctrl'yi kullandığımda, çirkin parmağım ağrıyordu çünkü her zaman Ctrl'e yaymak zorunda kalıyordum.
Kullandığım Alt-jbenim sol başparmak ve benim sağ işaret parmağıyla yazıp çok uygun olan. Ayrıca şu ana kadar başka bir programla çarpışma bulamadım.

unbind C-b
set-option -g prefix M-j

1

GNU ekranı için kaçış çizgisini eşlemek için, ~ / .screenrc dosyasındaki aşağıdakiler benim için çalışıyor.

escape ``


0

Mac kullanıcılarının §backtick'ten daha uygun olduğunu düşünüyorum .

On olmayan Mac klavyesi, ters tırnak ile aynı anahtarı hakkında konumlandırılır §Mac klavyelerde. Dolayısıyla, backtick'i kullanmayı önerenlerle aynı kolaylığı sağlamak için Mac klavyesinde paragraf işaretini kullanın.

Mac klavyelerinde backtick kullanımı, sola (⇧) kaydırma, (⌃) kontrol ve (⌥) alt tuşlarına çok yakın konumdayken zordur. MacBook'larda sol fntuşa yakın bile .


Mac klavyeyi tanımlayın ;-)
Arjan

Tamam, burada bir noktanız var, ne kadar genişletilmiş veya bir macbook klavye olsa da, bir Apple Mac ABD klavye düzeni demek istedim.
nanitous,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.