배쉬 대 Gnu 화면 : Ctrl-A를 Ctrl-Shift-A로 바꿉니다.


44

저는 GNU Screen의 새로운 사용자입니다. 나는 오랫동안 Bash를 사용해 왔으며 GNU Screen을 사용 해보고 싶다.

아시다시피, GNU Screen은 'Ca'(Control-A)를 명령 문자로 사용합니다. 문제는 Bash의 Control-A가 행의 시작 부분으로 이동하기 때문에 Bash (및 GNU Readline)의 행 편집 기능을 방해한다는 것입니다. "

"^ Q"또는 "``"(Backtick)와 같은 다른 키 시퀀스로 명령 문자를 설정할 수 있지만 아직 사용하지 않는 다른 키 시퀀스를 찾는 데 문제가 있습니다 (^ Q는 터미널에서 사용됨) , 백틱은 쉘 스크립트를 작성할 때 사용됩니다). 명령 문자의 길이는 한두 문자 만 될 수 있습니다. GNU 화면 제어 문자를 "Control-Shift-A"와 같은 것으로 설정할 수 있습니까?

(아직 하나 이상의 하이퍼 링크를 사용할 수 없으므로 Bash 설명서에 연결할 수 없습니다)


5
screen다른 시스템에서 사용할 때 혼란을 느끼지 않기 위해 기본 키 바인딩을 고수하거나 적어도 먼저 배우는 것이 가장 좋습니다. ^A a기본적으로 일반적인 ^A키 콤보를 보냅니다 . 해당 콤보를 많이 사용하면 약간 불편합니다. 나는 보통 HOME이것 때문에 대신 키를 사용합니다 . 그러나 그것이 항상 작동하지는 않습니다.
intuited

Ctrl-space를 좋아하지 않습니다. 잘 작동합니다.
와일드 카드

답변:


18

문제는 Control- Shift- A대부분의 터미널 에뮬레이션 프로그램에 의해 하나 개 보냈습니다에서에 대해 서로 다른 코드를 전송하지 않는 것이다 Control- A, 그래서있는 방법이 없을 것 화면 의 차이를 말할 수 있습니다.

stty -ixontty에서 "소프트웨어 흐름 제어"를 비활성화 하면 Cq를 사용할 수 있습니다 . 나는 보통 이것을 사용하여 C를 사용하여 명령 줄을 검색 할 수 있습니다.

일반적으로 언 바운드 된 것처럼 보이기 때문에 C- ^를 고려할 수 있습니다. 그것은이다 Control- Shift- 6US 키보드 레이아웃에 있지만, 다른 레이아웃에 입력하기 어려울 수 있습니다.

대부분의 사람들은 SIGQUIT를 보내기 위해 tty 제어 문자 C- \를 사용하지 않습니다. 이를 사용하려면 with를 사용하여 tty 기능을 비활성화하고 stty quit undef접두사 키로 바인딩하십시오. quit 키가 stty 로 비활성화되지 않은 tty에서 C- \를 누르면 screen 을 활성화하는 대신 포 그라운드 프로세스를 종료 할 수 있기 때문에 약간 위험 합니다.

얼마 전 tmux 로 전환했습니다 . 그것의 기본은의 Cb입니다 그것은하에 개발 되었기 때문에 화면 과 방해하지 않은 화면 의 기본 . 나는 Cb가 나에게 잘 작동한다는 것을 알았다. 나는 보통 쉘 명령 행에서 단일 문자 이동을 위해 화살표 키를 사용한다.

또한, tmux 의 작성자는 기본 세션에서 Ca를 사용하고 항상 tmux 세션에 관계없이 Ca를 두 번 입력 합니다 . 이 습관을 기꺼이 받아들이려고한다면, 두 번째 Ca가 대부분의 Emacs와 같은 편집 컨텍스트에서 아무 문제가 없어야하기 때문에 괜찮은 타협처럼 보입니다. 두 번째 Ca가 no-op가 아닌 화면 외부에서 프로그램 / 컨텍스트를 자주 사용하는 경우에는 효과 가 없습니다.

기본적으로 칼슘 칼슘이 결합되어 다른 명령 (가장 최근에 활성화 된 화면으로 전환) 화면 . Ca Ca가 실제 Ca를 보내고 Ca o 스위치 윈도우를 갖도록하려면 다음을 입력하십시오 .screenrc.

escape ^A^A
bind o other

2
이것은 잘 들리지만 GNU 화면에서 Ca를 두 번 입력하면 이전에 표시된 창으로 전환됩니다. 어쩌면 "Ca Ca"를 다른 것으로 매핑 할 수는 있지만 실제로 어떻게 해야할지 모르겠습니다 ( 'escape xy'또는 'meta'를 지정 해야하는 것처럼 보입니다) gnu.org/software/screen/ manual / screen.html # Other-Window
Stefan Lasiewski

1
@Stefan Lasiewski : 죄송합니다. Ca Ca는 기본적으로 Ca를 보내지 않습니다. Ca Ca가 Ca와 Ca o를 이전 창으로 전환하게하는 약간의 구성에 대해서는 답변 끝에있는 추가 부분을 참조하십시오.
Chris Johnsen

잘 작동합니다! Ca Ca는 실제 Ca를 기본 쉘로 보내고 Ca o '는'기타 '창으로 전환합니다. 'Ca'를 Bash로 보내려면 'Ca'를 두 번 누르십시오. 이것은 화면 밖에서 작동하지 않아야하며 문제를 일으키지 않아야합니다.
Stefan Lasiewski

41

해결 방법이 필요 없습니다.
bash에서 screen을 사용하는 동안 줄의 시작 부분으로 이동하려면

Control- A(출시 후)A


일반적으로 화면 제어 문자가 bash 바로 가기와 충돌하는 경우 bash 바로 가기의 첫 번째 문자 ControlControl-A

다른 줄 편집 바로 가기도 마찬가지입니다.


고마워, 비록 쉽지는 않지만 지금은 이것을하지 않았다. 실제로 아무것도 재구성 할 필요가 없습니다. 나는 당신의 대답이 가장 좋습니다.
harald

+1 ty-이것은 가장 좋은 옵션입니다. 재미있는 것은, 이것을 시도하는 동안 우연히 Ca Ca를 치고 또 다른 위대한 콤보를 발견했습니다.
kfmfe04

3

화면에 C- \를 사용하고 충분하지 않습니다. 우연히 다른 키 정의에 부딪 칠 수 있지만 일반적으로 C- \는 아닙니다. 그것이 내가 좋아하는 것입니다.


3

나는 이것을 사용한다.screenrc

escape ^bb

예 : 분리하려면 ctrl-b d


0

screen / tmux와 함께 ctrl-_ (ctrl + 7 및 일반적으로 ctrl + /로 생성 할 수도 있음)을 사용합니다.


0

나는 대부분 ctrl-z를 사용하지만 일부는 ctrl-x를 사용합니다. 나는 'stop'인터럽트를 많이 사용하지 않지만 필요할 때 ^ zz를 입력 할 수 있습니다. 또한 기본 ctrl-a를 사용하는 원격 서버에서 보조 화면 세션을 시작할 수 있습니다. 그리고 세 번째 세션 (세 번째 서버에서)을 시작하면 ctrl-x를 사용할 수 있습니다. Ctrl-x는 잠금 화면 기능으로, 많은 환경에서 화면이 터미널 에뮬레이터 내에서 종종 실행되므로 일반적이지 않은 환경입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.