tmux 접두어를 OS X cmd 키 (또는 다른 바인딩)에 바인드


17

필자는 OS X에서 iTerm2 (또는이 경우 Terminal.app)에 익숙하지만 tmux (또는 screen)를 사용하려고합니다. 그러나이 문제는 두 응용 프로그램과 비슷합니다.

그래서 내 생각은 여러 개의 탭으로 열린 tmux 세션을 가진 하나의 iTerm 탭을 갖는 것이다. 전환을 수행하려면 tmux에서 구성해야하는 기본 기능이 있습니다. cmd + n (Firefox, Chrome, iTerm2 자체 등)을 사용하여 'n'탭을 전환하십시오.

그러나 나는 맥 키보드에서 cmd 키를 매핑하는 방법을 찾을 수 없습니다. 나는 처음에는 접두사 키로 cmd를 구현하려고했지만 성공하지 못했습니다. 나는 설정을 시도했다.

set-option -g prefix M-a (hoping for Meta-a)

set-option -g prefix ^a (hoping for ^ to work)

그러나 아무것도 작동하지 않습니다. 이것이 가능한가? 나는 접두어를 cmd에 바인드 할 필요가 없지만 cmd + n으로 tmux 탭을 변경할 수 있기를 원합니다.

고맙습니다

답변:


8

일련의 키 입력을 호출하려고합니다 (첫 번째 Ctrl-b, 그 다음에 0에서 9까지의 범위).

가장 좋은 방법은 다음과 같은 키보드 단축키 유틸리티를 사용하는 것입니다. 집사 또는 키보드 대 음악가 당신을 위해 이것을 할 수 있습니다.


사용 집사 :

고르다 +»스마트 아이템»키 입력 , 단축키 Cmd-1. 프레스 Ctrl-B, 그 다음에 1 키 입력 . 터미널 (또는 iTerm)에서만 유효하도록 구성하십시오. 그것은 다른 응용 프로그램이 그것을 좋아하지 않을 수도 있지만, 이미 알고 있다는 것을 경고합니다.


사용 키보드 대 음악가 :

터미널 (또는 iTerm)에서만 사용할 수있는 새 그룹을 왼쪽에 만듭니다.

에 의해 트리거 된 새 항목 추가 단축키 트리거 ( Cmd-1 ) 그리고 두 개를 더한다. 키 입력 그 행동에 Ctrl-B1.


좀 더 살펴보고 싶을 수도 있습니다. 이 주제 - 사용하지 않는다. Command 하지만, 터미널을 사용하는 나를 위해 작동하지 않았다.


로부터 tmux 문서 :

명령에 키 키를 바인딩하십시오. ctrl 키에는 'C-'또는 ''접두어가 붙고, alt (meta) 키에는 'M-'이 붙을 수 있습니다. -r 플래그는이 키가 반복 될 수 있음을 나타냅니다. 반복 시간 옵션을 참조하십시오.

세 번째 수정 자 키는 지원하지 않습니다.


무슨 두려운 해킹! 그것은 너무 일한다! 버틀러가 지나친 것처럼 보이기 때문에 키보드 대 음악가를 사용했습니다. 고맙습니다!
rubenfonseca

키보드 마에스트로는 훌륭하게 작동합니다.
Sam Selikoff

15

iTerm2에서는 터미널로 전송되는 16 진수 코드에 바로 가기를 매핑 할 수 있습니다. iTem2 환경 설정으로 이동 - & gt; 열쇠. Global Shortcut Keys에서 +를 클릭하고 추가 할 cmd + 1과 같은 원하는 바로 가기를 입력하십시오. 그런 다음 "Hex 코드 보내기"를 선택하십시오. 나타나는 상자에 공백으로 구분하여 tmux에 보낼 16 진 코드를 입력하십시오. Ctrl-B는 0x02이므로 "Ctrl-B 1"은 "0x02 0x31"을 입력하십시오. 더 많은 16 진법 코드는 다음을 참조하십시오. http://www.nthelp.com/ascii.htm

나는 tmux 창 사이를 돌아 다니기 위해 h, j, k, l을 사용하여 Cmd를 매핑하고 분할을 만들기 위해 %와 "Cmd"를 매핑했습니다. 하나의 컨트롤 키로 빔 스플릿 (vim splits) 사이를 이동하는 비슷한 작업을 할 것입니다.


이것은 iTerm2를 사용하는 사람들에게 가장 좋은 답변입니다. 감사!
newUserNameHere

1
어떤 이유로 iTerm2 빌드 3.0.2에서 작동하지 않습니다.
jasonszhao

2

Terminal.app을 사용하면 특별한 단축키를 만들 수 있습니다. 나는 전에 다른 날을 알아 냈지만 이것은 사자보다 먼저 가능했을 수도 있습니다.

환경 설정 & gt; 설정을 클릭하고 "키보드"탭을 클릭하십시오. 이제 상자 아래에있는 더하기 아이콘을 클릭하여 새 키보드 바로 가기를 추가해야합니다. 이제 "문자열을 셸로 보냄"이라는 키 콤보를 설정하려고합니다.

예: 매핑하고자하는 M-LeftArrow를 설정하려고한다고 가정 해 봅시다. prefix-p (이전 창).

Key: Left Arrow 
Modifier: Option 
Action: send string to shell

이제 입력 해주세요. prefix-p 입력 상자에 prefix 당신이 tmux에 대해 설정 한 것은 무엇이든 (나는 cntrl-a를 사용하여 상자를 표시합니다. \001p ). 유의할 점은 실수로 문자를 삭제하는 대신 문자 삭제가 삽입되므로 엉망인 경우에는 "한 문자 삭제"버튼을 눌러 뒤로 이동하십시오.

특수 문자 나는 삶을 편하게하기 위해 설정했습니다 :

M-Left  > Previous Window
M-Right > Next Window
M-Up    > Enter scrolling mode
M-Down  > Next Pane

cntrl-anything과 shift-anything을 수정할 수도 있지만 $ EDITOR 나 다른 프로그램을 방해 할 수 있으므로 특별한 기능이 쓸모 없게 될 수도 있다는 점에 유의하십시오.

또한 iTerm2에서이 기능을 복제하는 방법을 알 수 없었습니다.


1

iTerm2가 tmux와 함께 제공하는 네이티브 (그러나 매우 실험적인) 통합을 고려할 수도 있습니다. http://code.google.com/p/iterm2/wiki/TmuxIntegration

그렇게하면 Cmd-D를 눌러 화면을 분할하면 iTerm2가 탭을 분할합니다. 스플릿이 기본이기 때문에 가운데 부분을 드래그하여 너비를 다시 조정하거나 클릭하여 창을 선택할 수 있습니다. 새로운 탭 / 창에 대한 내용 (그러나 단축키는 약간 다릅니다. 그렇지 않으면 비 -mux 탭을 추가 할 방법이 없습니다).

그리고 tmux처럼, 분리하고 다시 부착하면 모든 것이 저장됩니다.

두 가지주의 사항이 있습니다. * 이것은 매우 실험적인 기능이며 나를 위해 아주 희미합니다. * tmux를 직접 만들어야합니다 (위의 링크에있는 아카이브를 사용하십시오).

- 크리스


나는 2 년이 지났음을 알고 있지만 이것이 아직도 효과가있다면 어떤 생각을 할 수 있습니까? 나는 당신의 연결에 지시를 따랐다, 그러나 cmd+D tmux가 아닌 iTerm2의 창을 분할합니다.
Sam Selikoff

1
@SamSelikoff 당신은 그것으로 시작해야합니다. tmux -CC.
jasonszhao

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