screen 또는 tmux에서 가장 충돌이 적은 접두사 / 이스케이프 시퀀스는 무엇입니까?


96

화면은 Ctrl+ 와 함께갑니다 A. 반면에 tmux는 화면 내에서 개발 된대로 Ctrl+를 사용합니다 B. 그러나 두 키 입력은 모두 편집기, 셸 등에서 사용됩니다. 따라서 하나를 선택하면 tmux 또는 화면에서 사용할 때 해당 도구의 사용자 경험과 기능이 저하됩니다.

다른 프로그램 및 쉘의 키 바인딩과 가장 적은 접두사는 무엇입니까?


6
"어느 프로그램과 가장 충돌합니까?" 의견과는 아무런 관련이 없습니다.
iconoclast

변경 후 변경 ~/.tmux.conf사항이 적용되도록 tmux 서버를 다시 시작하는 것을 잊지 마십시오 ( superuser.com/q/188491/105108 ).
ks1322

접두사 사용의 대안 : 일부 터미널은 이제 "tmux -CC"(예 : macOS 용 iTerm2)를 통해 tmux 통합을 제공합니다. 그렇게하면 tmux 창이 터미널에 탭으로 나타납니다. 그런 다음 터미널 프로그램과 충돌하지 않는 탭을 관리하기 위해 키 바인딩을 사용할 수 있습니다 (예 : cmd 키 (일명 슈퍼 키, Windows 키) 사용).
cjay

답변:


48

키보드 레이아웃에서 편리한 위치에 있으면 ^\(일명 ^|) 최고 라고 생각 합니다. 다른 프로그램에서의 사용은 매우 드 :니다.

  • SIGQUIT프로세스로 보내기
  • ^C인터셉트 될 때 쉘에서 for 또는 while 루프 중단
  • toggle-input-method 이맥스에서

나는 다른 용도를 모른다. 프로세스가 익숙해 tmux지거나 screen끝난 후에 실수로 프로세스를 종료하지 않도록주의 하십시오. 그래도 몇 년 동안 한 번만 일어났습니다.

~/.tmux.conf

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

~/.screenrc

escape ^|^|

나는 이것을 시도했지만 tmux는 C-`. Can I escape the 어떻게 든 문자 사용에 대해 불평 합니까?
Jason

2
다른 사람에게 알리기 'C-\'위해 tmux 설정에서`C- \`대신 작성해야합니다 .
gns-ank

2
새로운 설정을 시도한 후에 'tmux source-file /path/to/tmux.conf'를 잊지 마십시오
user72923

12
그러나 나는 그 명령을 습관화하고, 내가 스크린에 있다는 것을 잊었을 때 실수로 SIGQUIT를 보내기 시작합니다 ...
Kache

3
"키보드 레이아웃에서 편리한 위치에 있다면"그렇지 않습니다. 자주 사용하는 리 맵핑이 C- \를 편리하게 만드는 것을 의미합니까?
storypixel

53

tmux에서 이탈로 backtick를 사용하려는 사람들을 위해 다음을 추가하고 싶을 것입니다.

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

마지막 하나는 중요합니다. 그렇지 않으면 다른 목적으로 백틱을 입력 할 수 없습니다 :-)


Backtick은 SQL을 붙여 넣기 전까지는 좋은 생각입니다.
Synchro

3
tmux 1.8의 @Synchro는 붙여 넣기 시간 옵션이 기본적으로 설정되어 있기 때문에 더 이상 문제가되지 않습니다 (1ms로 설정). 여기 참조 : sourceforge.net/p/tmux/tmux-code/ci/…
sickill

이 질문 $()은 껍질 대신 백틱을 사용하는 데 익숙해 져서 문제를 일으키기 시작한 백틱의 대안을 찾고 있다는 것을 발견했습니다 . 또한 마크 다운을 많이 작성하기 시작하면 고통이됩니다. 몇 년 동안 사용해 왔지만 불행히도 지금 바꿔야합니다.
kirelagin

4
.tmux.conf에는 또한 있습니다 bind-key C-a set-option -g prefix C-a. 백틱을 사용해야 할 때마다 `-Ctrl-a접두사가로 설정됩니다 C-a. 그리고 나는 돌아갈 bind-key C-b set-option -g prefix `수 있도록C-a-C-b
Boris

마크 다운을 작성하는 경우 어떻게됩니까? 접두사를 어떻게 탈출합니까?
OJFord

21

Ctrl + A는 Emacs 모드의 Bash를 포함하여 Emacs에 문제를 일으키는 것으로 알려져 있습니다. 이것이 문제가되지 않는 것 같습니다.

내가 본 다른 옵션은 Ctrl + O입니다. 분명히 이것은 RatPoison의 기본값입니다 (마우스가 필요없는 X 윈도우 관리자입니다). 중첩 된 화면을 사용할 때 Ctrl + O를 사용했습니다. 외부 화면의 경우 Ctrl + O, 내부 화면의 경우 Ctrl + A. 잘 작동했지만 내 동료들을 두려워했습니다. :-)

나는 단지 생각하고 있었고 Emacs 대신 vi를 사용한다면 몇 가지 대안이 있습니다. 예를 들어 Ctrl + G는 많이 사용되지 않습니다.


8
Emacs 사용자에게는 Ctrl + O가 가장 좋은 선택 인 것 같습니다. emacs에서는 "커서에서 새 줄을 열고"bash에서는 "명령 시퀀스를 반복합니다".
흐름

2
오른 손잡이 Ctrl 조작으로 괜찮다면 +1, 이것은 좋은 백업처럼 보입니다. 나는 왼손잡이 자신 ;-) 해요
DaveParillo

9
나는 Ctrl + O가 vim을 깨뜨린다고 생각한다
Mu Qiao

14
@MuQiao에 동의합니다. Ctrl-o는 Vim에서 코드를 탐색 할 때 매우 자주 사용하는 기능인 이전 커서 위치 (많은 IDE의 뒤로 버튼과 동일)로 이동하는 데 사용됩니다. Ctrl-b는 Vim의 PageUp과 동의어입니다. Vim에서는 Ctrl-b를 전혀 사용하지 않습니다. 따라서 나와 같은 Vim 사용자의 경우 Ctrl-b보다 여전히 Ctrl-b가 더 좋습니다. Cj는 Vim에서 j 또는 <Down>과 동의어이므로 Vim에서 한 줄 아래로 이동하는 Cj를 사용하지 않으므로 Cj를 접두사 키로 사용합니다. 나는 ~ / .tmux.conf에 이것을 가지고있다 :set -g prefix2 C-j; bind-key C-j send-prefix -2
Susam Pal

C-jCtrlP와 충돌합니다. 버퍼 목록을 위아래로 이동하면 각각 C-kC-j각각 사용
blockloop

14

내가있어 CAPS-LOCK전세계에 매핑 ESC. 그런 다음 접두사로 M-Space(예 : CAPS-LOCK+ Space)를 사용합니다.


나는 이것을하려고 노력하고 있지만 CAPS-LOCK(다음 명령이나 무언가를 생각할 때) tmux (또는 iTerm,이 원인이 무엇인지 확실하지 않은 경우)를 ESC반복하여 명령을 수신 M-Space한 다음 작동하지 않습니다. 반복되는 핵심 문제를 비활성화하는 방법이 있습니까? 예를 들어, 나는을 빨리 누를 때 작동 CAPS-LOCK + Space하지만 CAPS-LOCK, 1 초 정도 누르고 Space있다가 누르면 M-Space코드 가 등록되지 않습니다 ...
Bruno Ely

12

화면에 복잡한 시스템을 사용합니다. 내 기본 이스케이프는 \ 140 \ 140으로 설정되어 있습니다. Ctrl-A는 Zsh 내에서 Emacs와 명령 줄 편집을 복잡하게 만들고 Ctrl-O를 싫어합니다 (대부분의 화면 동작의 경우 두 손 조작).

1에서 시작하여 키보드에서 왼쪽에서 오른쪽으로 새 세션이 작성되도록 's'를 화면 1에 리 바인드합니다. 이렇게하면 지속적 또는 참조 창으로 간주되는 항목에 대해 화면 0을 예약 할 수 있습니다. 한 손으로 제스처를 (backtick) 1, (backtick) 2, (backtick) 3으로 빠르게 전환하여 창 사이를 전환합니다.

유닉스 환경에서 백틱을 사용할 때 발생하는 문제는 쉘 / 펄 스크립트 코드를 잘라 붙여 넣을 때입니다. 이러한 이유로 나는 이스케이프 문자 사이를 전환하기 위해 F11 / F12 키를 바인딩합니다.

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

잘라 내기 및 붙여 넣기 작업을 수행 할 때 이스케이프를 Ctrl-O로 바꿉니다. 이중 틱을 칠하는 것이 간단하고 대부분의 화면 작업에서 좋은 트레이드 오프를 발견했습니다.

F12 키를 누르고 모드를 나타내는 캡션을 사용하여 모드를 전환 할 수있는 새로운 솔루션으로이 답변을 다시 방문하십시오.

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

창의적인 솔루션. 나는 감동.
staticsan

bind-key -n F11 set -g prefix`bind-key -n F12 set -g prefix Co 다른 사람들이 이것을 수정하고자하는 경우 tmux에 대한 업데이트.
milkypostman 2019

1
코드를 붙여 넣을 때 명령을 트리거하지 않지만 키보드에서 backtick + key를 입력하면 backtick와 다른 키 사이의 일시 중지가 더 길어지기 때문에 tmux에서 prefix + other_key 콤보에 대해 최소 시간 초과를 설정하는 방법이 있습니까? ?
sickill

11

내가 사용 Ctrl-Q하고 tmux지금까지 잘 작동했습니다. 그러나 쉘 흐름 제어와 충돌한다고 언급해야합니다. 기본적 Ctrl-Q으로는로 중지 한 후 출력을 다시 활성화하는 데 사용됩니다 Ctrl-S. 실수로 부딪친 후 갇힌 껍질에 놀랐을 때 Ctrl-S나는 누르지 않는 법을 배웠다 Ctrl-S.

(하나는 함께 모두 흐름 제어를 해제 할 수있다 stty -ixon, 또는 서로 다른 키 바인딩 stty start과를 stty stop.)

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

이 바인드를 채택했으며 매우 편리합니다. 감사!
aymericbeaumet

나는 항상 터미널 제어 흐름을 비활성화하기 때문에 내가 좋아하는 것.
Jack O'Connor 3

2
에 대한 emacs에서 사용됩니다 quote-inserted. 샘플 사용 (emacs) : 다음 탭 문자를 검색하려는 경우 –<Ctrl-s>+<Ctrl-q>+<TAB>
nhed

6

^Space입력하기 가장 쉬운 접두사이기 때문에 매우 특별하고 일반적인 작업 을 예약 하고 싶지만 지금 prefixtmux 로 매핑하려고합니다 .

입력하려는 명령으로 즉시 손가락을 자유롭게 이동할 수 있습니다. 시도 해봐.


3
그것은 오래 가지 않았다 – 나는 ^ j에 돌아온다. ^ Space는 OSX 수준 앱 (Spotlight, QuickSilver, DTerm)을 호출하는 데 사용하는 명령과 너무 유사합니다.
테라스

나는 Cj도 사용합니다. 이것은 ~ / .tmux.conf에서 사용하는 것입니다.set -g prefix2 C-j; bind-key C-j send-prefix -2
Susam Pal

1
나는 또한 C-Space를 사용하며 거의 다른 곳에서는 사용되지 않습니다.
mahdix

1
내가 크롬 북에있어 같은 C-공간은 나를 위해 완벽합니다 : D
에릭 응우 엔

6

뒤늦은 제안 : ctrl-s. ctrl-s많은 장점이 있습니다.

  1. 홈 행에서.
  2. 아직 가까이 ctrl-a(사실, 대부분의 typers 것이 그들이에 사용되는 것과 동일한 두 손가락을 사용 ctrl-a에서 근육 메모리 스위치, 그래서) ctrl-a에는 ctrl-s간단하다 - 나를 위해, 그것을 시도하는 최초의 시간에 대한 내 제 2의 천성이되었다.
  3. 비 웁니다 ctrl-a"다시 라인의 시작 부분으로"또는 정력 스타일 "증분 번호"작업 이맥스 - 스타일. 또는 임베디드 화면 인스턴스를 제어하기 위해 접두사 문자를 이스케이프 처리 할 필요없이 tmux 창 내에서 화면을 실행하는 경우가 있습니다. (나는 종종 화면을 실행하는 원격 서버에 대한 ssh 세션을 포함하는 창이있는 로컬 tmux를 사용 하여이 작업을 수행합니다)
  4. 일반적으로 사용되는 다른 터미널 기능에 이스케이프 요구 사항을 재정의하거나 추가하지 않습니다. 아무것도 대부분의 사람들이 오늘날 사용은 CTRL-S에입니다!

물론, 아무것도 CTRL-S에없는 이유는 터미널에서, 그것은 전통적으로 같은 페이징 도구 전에 다시 일 데이트, 흐름 제어에 사용되는 것입니다 moreless일반적이었다. 어딘가에 일부 GUI 터미널 프로그램이 여전히 기본적으로 활성화 된 흐름 제어 기능을 가지고 있다고 확신하지만 실제로는 충돌하지 않았습니다. 내가 시도한 GUI 터미널 프로그램은 기본적으로 완전히 무시하는 것처럼 보이므로 편리한 키 조합을보다 생산적으로 사용할 수 있습니다.

따라서 실제로 원시 Linux 터미널 내에서 (예 : GUI 기반 터미널에서) screen / tmux를 사용하지 않는 경우 ctrl-s시도해 보는 것이 좋습니다 . 그것은 tmux와 화면에서 압축을 훨씬 더 편리하게했습니다.


4
Ctrl-s는 Ctrl-r로 멀리 갈 때 앞으로 검색됩니다. :)
Jack O'Connor

Ctrl-S는 콘솔 출력 중지 (일명 "동결")에 일반적입니다. 나는 그것을 다시 매핑하려고 할 때 나를 조금.
Dave

5

충돌이없는 키 C-z는 일반적으로 프로그램을 백그라운드로 보내어 쉘을 시작한 쉘에서 다른 작업을 계속하는 데 사용되기 때문에 가능합니다. tmux가있을 때는이 작업을 수행하지 않습니다.


Cz를 사용하는 데있어 유일한 문제는 대부분의 다른 사람들이 Cb를 사용한다는 것입니다. 따라서 다른 사람의 컴퓨터에서 페어 프로그래밍을 할 때 근육 메모리가 꺼져 있습니다 .Cz fg를 잘못 입력 한 후 많이 실행해야합니다 .
Steve Jorgensen

Cz에 대한 좋은 생각은 Ca를 사용하고 싶지 않다고 가정하면 요즘 대부분의 노트북 컴퓨터 키보드에서 유일한 제어 키 인 왼쪽 Ctrl 키와 매우 가깝다는 것입니다. Ctrl에 매핑 된 Caps Lock도 닫습니다. 어색한 곳에 Esc 키가있는 Kinesis Freestyle Solo 키보드를 자주 사용하기 때문에 Caps Lock을 Esc에 매핑합니다.
Steve Jorgensen

4

`(backtick)가 사용되는 것을 들었다면 실제 배틱을 위해 두 번 입력하면됩니다. 동작에 익숙한 vi 사용자에게 더 좋을 수 있습니다 (Caps lock 일을하지 않는 한).


tmux에 대한 백틱을 어떻게 정의 할 수 있습니까?
Alexandre Nizoux

언 바인드 Cb; -g 접두사 ' '; bind ''send-prefix를 설정하십시오. 위의 Darren Hall의 답변을 참조하십시오.
bluehavana

나는 약 1 년 동안 backtick을 사용하고 결코 2 키 / 콤보 접두사로 돌아 가지 않을 것입니다. 시도 해봐.
sickill

4

C-jvi 또는 emacs를 많이 방해하지 않는을 권장 합니다. 본질적으로, 나는 Susam Pal의 의견에 동의합니다. Susam Pal은 답변으로 표시 할 가치가있는 것으로 보입니다. 다른 사람들은 모두 내 관점에서 중대한 갈등을 가지고있는 것 같습니다.

Cj는 j 또는 Vim과 동의어이며 Vim에서 한 줄 아래로 이동하는 Cj를 사용하지 않으므로 Cj를 접두사 키로 사용합니다. 나는 ~ / .tmux.conf에 이것을 가지고 있습니다 :

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


1
귀하의 권장 사항에 따라 잠시 동안 Cj를 사용하고 있으며 찾은 유일한 충돌은 CtrlP vim 플러그인입니다. Cj 및 Ck는 각각 옵션을 위아래로 이동하는 데 사용됩니다.
blockloop

3

Programmer Dvorak 키보드 레이아웃의 경우 빼기 (대시) 키를 접두사로 사용하는 것이 좋습니다 (예 : ctrl+) -.
빼기 키는 쿼티 레이아웃에서 작은 따옴표 키 위치에 있습니다. 또한 캡 잠금 키 기능을 Ctrl 키로 사용했습니다. 다음은 접두어로 설정하기위한 tmux conf입니다.

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

왜 밑줄이 마이너스 대신 사용되는지 궁금 할 것입니다. Tmux : C— (control-minus)에 어떻게 바인딩합니까?를 참조하십시오 .
쿼티의 경우 tmux 접두사 키를 C- '에 어떻게 바인딩합니까?를 적용 할 수 있습니까? 동일한 바로 가기를 유지하기 위해 솔루션.

Vim / Neovim을 사용하면 이것이 완벽한 접두사라고 말할 수 있습니다. ctrl+ a또는 ctrl+ 와 같은 접두사 b는 어떤 방식 으로든 Vim의 기능을 그림자 (중복)로 수행합니다.


2

개인적으로 b너무 멀리 떨어져 있습니다 Ctrl. tmux를 사용할 때 항상 바인딩을 Cb에서 Ca로 변경하십시오. Ca와의 주요 충돌은 모두 선택이지만 이것이 tmux를 사용하는 프로그램에서 문제가되는 것은 아닙니다.


실제로, 나는 기본값을 사용하고 (화면에서 tmux를 시도한 적이 없음) 아직 변경할 필요를 찾지 못했습니다.
quck quixote

2

GNU emacs, zsh 및 MS Windows 사용자로서 Control-T를 사용합니다. (예 : .screenrc :)

"^ T ^ T"탈출

예 Control-T는 우분투 적성의 풀다운 메뉴 또는 Emacs의 문자 조옮김과 같이 바인딩되어 있습니다.

나는 두 손이 필요하기 때문에 Co를 무시했다.


2

가장 좋은 해결책은 ^ C라고 생각합니다. Emacs는 ^ C를 접두사 키로 사용하며, 쉘에 ^ C를 입력해야 할 때 거의 항상 2를 입력한다는 것을 알았습니다. :-)

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


1

백틱을 사용할 수 있습니다. 일부 이전 버전의 tmux는 백틱을 지원하지 않으므로 해결 방법으로 다음을 수행 할 수 있습니다 (C-`, C- @ 및 C-space를 메타로 동시에 메타로 추가).

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

일반적으로 CapsLock을 Ctrl에 다시 매핑하므로 백틱에 더 적합합니다.


나는 이것도 사용합니다. C-Space는 입력하기가 매우 쉽습니다.
kzh

백틱은 꽤 좋습니다. 그러나 결과적으로 터미널 친화적이지 않습니다. 리눅스에서 xterm으로 잘못 갈 수는 없지만 putty 및 iTerm2 (macos)와 같은 터미널에는 올바르게 에뮬레이션하는 데 문제가 있습니다. 다행히도 iTerm2에서는 구성에서이 문제를 해결할 수 있습니다. 나는 창문 / 퍼티를 많이 사용하지 않으므로 Ctrl-Space는 가능한 해결책 인 것 같습니다. :)
Alex

1

대부분의 답변은 Ctrl을 키 조합의 일부로 사용합니다.
Ctrl 키를 사용할 때 항상 새끼 손가락을 Ctrl 키로 펴야했기 때문에 새끼 손가락이 다 치기 시작했습니다.
나는 Alt-j왼쪽 엄지 손가락과 오른쪽 검지 손가락으로 타이핑하는 것을 사용 하며 매우 편리합니다. 또한 지금까지 다른 프로그램과의 충돌을 발견하지 못했습니다.

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

1

GNU 화면의 경우 백틱을 이스케이프로 매핑하면 ~ / .screenrc의 다음이 작동합니다.

escape ``

0

접두사로 ctrl- \ 바인딩 제안을 좋아 하지만 Linux Mint 12 에서이 기능을 사용하려면 바인딩이 맨 아래에 있어야합니다. 그렇지 않으면 걸리지 않을 것입니다. 내 .tmux.conf를 참조하십시오 : emacs 및 vim과 함께 tmux 사용


순서가 변경 될 수 있으므로 답변을 "위"및 "아래"로 언급하지 마십시오. 대신 답을 연결하십시오. 답변 주셔서 감사합니다 :)
흐름

0

나는 맥 사용자가 §백틱보다 더 편리하다고 생각합니다.

비 맥 키보드, 백틱은 같은 키에 대해에 위치 §맥 키보드에. 따라서, 백틱을 사용하도록 제안하는 사람들과 동일한 편의를 경험하려면 Mac 키보드에서 단락 기호를 사용하십시오.

Mac 키보드에서 백틱을 사용하는 것은 왼쪽 (shift) 시프트, (⌃) 제어 및 (⌥) Alt 키에 매우 가깝기 때문에 까다 롭습니다. 왼쪽 fn키 근처에서도 MacBook의 경우 .


Mac 키보드 정의 ;-)
Arjan

자, 여기서 당신은 요점을 알고 있습니다. 풀 확장 또는 맥북 키보드에 관계없이 Apple Mac US 키보드 레이아웃을 의미했습니다.
nanitous
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.