Bash에서 Tab을 두 번 입력 screen -x
하고 누르면 실행 중인 모든 세션 목록이 표시됩니다.
zsh에서 Tab을 두 번 입력 screen -ls
하고 누르면 실행 중인 모든 세션 목록이 표시되고 탭을 통해 이동할 수 있습니다. 결국 Enter를 누르면 세션이 선택되지만 screen -ls session-name
Enter를 다시 누르면 세션이 실행됩니다.
-x
세션 이름 을 -ls
입력하거나 세션을 선택 하고 ls
돌아가서 x
.
screen -ln
탭 동작을 구현하기 위해 탭 동작을 구현하는 코드를 찾을 수 없습니다 -x
. 플러그인 목록에서 검색/탐색했지만 .oh-my-zsh
아무것도 찾지 못했습니다.
도움이나 작업 흐름 팁에 감사드립니다. 나는 주로 screen -x
.
답변1
코드는 다음과 같습니다._screen
(완료는 zsh에서 기본적으로 제공되며 추가 플러그인이 아닙니다). 모든 세션은 Zsh에서 완료되었지만 -ls
추가 세션만 완료되었습니다 -x
.
-x
매뉴얼에 따라 "분리되지 않은 화면 세션에 연결"하도록 설계되었습니다. 그러나 세션이 분리된 경우에도 작동합니다. 따라서 두 가지 행동 모두 의미가 있습니다. 이상적으로 이것은 zsh가 수행하는 구성 옵션이어야 합니다.
현재 동작 대신 원하는 동작을 얻으려면 줄을 변경해야 합니다.
'-x[attach to a not detached screen (multi display mode)]: :->attached-sessions' \
도착하다
'-x[attach to a not detached screen (multi display mode)]: :->any-sessions' \
원하는 동작을 얻기 위해 완료 함수를 원숭이 패치하기 위해 다음 코드를 초기화 파일에 넣을 수 있습니다. 뒤에 와야 합니다 compinit
(따라서 oh-my-zsh를 사용하는 경우 oh-my-zsh 줄 다음에).
# Monkey-patch the screen completion function to complete all sessions
# after -x, not just detached sessions.
autoload +X _screen # load immediately
set -o extendedglob # needed for (#b) and # below and generally a good
# thing to have in interactive shells
functions[_screen]=${functions[_screen]/(#b)(\'-x[^:]#:[^:]#:->)attached-sessions(\')/${match[1]}any-sessions${match[2]}}