tmux에는 다양한 유형의 메뉴를 생성할 수 있는 기본 키 바인딩이 많이 있습니다. 분명히 이러한 키 바인딩은 표시되는 전체 메뉴에 대한 코드를 엽니다.
bind-key -T prefix < display-menu -T "#[align=centre]#{window_index}:#{window_name}" -x W -y W "#{?#{>:#{session_windows},1},,-}Swap Left" l { swap-window -t :-1 } "#{?#{>:#{session_windows},1},,-}Swap Right" r { swap-window -t :+1 } "#{?pane_marked_set,,-}Swap Marked" s { swap-window } '' Kill X { kill-window } Respawn R { respawn-window -k } "#{?pane_marked,Unmark,Mark}" m { select-pane -m } Rename n { command-prompt -F -I "#W" { rename-window -t "#{window_id}" "%%" } } '' "New After" w { new-window -a } "New At End" W { new-window }
매우 유용하다고 생각하지만 그 중 일부를 다른 키로 이동하고 싶습니다(예: <
및 을 및 >
으로 이동하고 싶습니다 ). 그러나 전체 메뉴 정의를 내 구성에 복사하는 것은 업스트림이 변경되는지 전혀 알 수 없으므로 차선책인 것 같습니다.[
]
내 정의를 복제하지 않고 기존 tmux 키 바인딩을 다른 키로 "이동"할 수 있는 방법이 있습니까 .tmux.conf
?
답변1
tmux list-keys
.tmux.conf
소스로 선택한 파일 내에서 또는 내부에서 재사용할 수 있는 출력을 생성합니까(또는 적어도 생성해야 합니다) (예: use source-file
).
아이디어는 에서 출력을 가져와 에 tmux list-keys -T prefix "<"
전달 하고 마지막으로 에 공급하는 것입니다 ( "표준 입력에서 읽는 것"으로 해석됨). 셸에서 다음 명령을 사용하여 이 작업을 수행할 수 있습니다.sed
<
[
tmux source-file -
-
tmux list-keys -T prefix "<" | sed "1 s/</[/" | tmux source-file -
.tmux.conf
파이프를 설정하려면 여전히 쉘이 필요하므로 다음을 사용 하십시오 run-shell
.
run-shell 'tmux list-keys -T prefix "<" | sed "1 s/</[/" | tmux source-file -'
이 경우에는 첫 번째 줄의 첫 번째 줄을 sed "1 s/</[/"
변경하는 것이 좋습니다 . <
그러나 키가 이면 i
like를 사용하여 에서 sed "1 s/ i / [ /"
일치하는 것을 피해야 합니다 . 또는 경우에 따라 전체 구문을 검색하고 바꿔야 할 수도 있습니다. 또한 일부 문자는 정규 표현식에서 특별하다는 점을 명심하세요. 어쨌든 원하는 변경을 수행하는 명령을 작성할 수 있다면 이 접근 방식이 작동할 것입니다.i
bind-key
-T prefix …
sed