수리하다

수리하다

나는 그것을 screen꽤 많이 사용하고 있으며 현재 창 전체 화면의 전역 시작 또는 전역 끝으로 이동하는 기본값 대신 Home및 키를 현재 줄의 시작 또는 끝으로 이동하기를 원합니다. End역사.

복사 모드에서 실행 bindkey -m -k "kh" stuff 0하면 bindkey -m -k "kH" stuff $원하는 효과를 얻을 수 있지만 바인딩도 명령 입력 모드에 영향을 주기 때문에 -m커서가 움직일 때 "0" 텍스트가 삽입되고 명령 입력 시 "$" 텍스트가 삽입되므로 명령 입력 시 및 명령 사용이 효과적으로 비활성화됩니다. 명령 모음.HomeEnd

명령을 입력하기 위해 동시에 키를 깨지 않고 이러한 키를 길들일 수 있는 방법이 있습니까?

답변1

바로 여기에. (현재) bindkey영향을 받는 플래그 는 없지만오직복사 모드(명령 모드 아님)에서도 비슷한 결과를 얻을 수 있는 방법이 여전히 있습니다. 하지만 이는 새로운 구문을 배우는 것을 의미합니다.

수리하다

이것markkeys이 명령은 복사 모드에만 영향을 미치고 명령 모드 동작에는 영향을 주지 않습니다. 허용되는 문자는 까다롭지만 없는 것보다는 낫고 이 경우 작업이 완료됩니다.

markkeys "$=\205"
markkeys "\^=\201"

위의 내용은 screen라인의 시작과 끝, 그리고 신호( Home및 에서 보낸 )를 End각각 ^$이동 키 에 별칭으로 지정하도록 지시합니다. 일반적으로 이스케이프 시퀀스를 트리거하는 데 사용되기 때문에 ^이스케이프 문자열로 작성되지만 문자 그대로 의미합니다.\^

Home보이는 첫 번째 문자 대신 시작/왼쪽 끝까지 이동 하려면 로 markkeys "\^=\201"바꾸 십시오 markkeys "0=\201".

g또한 복사 모드에서도 및 G창 기록의 전역 시작 또는 끝을 가져오는 데 사용할 수 있습니다 .

수정 사항을 찾은 방법

그러한 일에 유용한 모든 16진수 이스케이프를 나열하는 완전한 참조를 아직 모르지만, bindkey -m행동에 대한 관심이 사라질 때까지 화면 내에서 실행한 다음 거기에서 매핑을 재정의하여 관련 항목 두 개를 찾을 수 있었습니다. 관련 라인은 다음과 같습니다:

kh          -> stuff \201
kH          -> stuff \205

irc://irc.freenode.net/screen에 있는 사람들의 도움으로 나는 쉘의 왼쪽에 있는 코드를 찾을 수 있다는 것을 배웠습니다. man terminfo이 코드는 Tcap 열에 다음과 같이 나열되어 있습니다.

Variable        Capname       TCap Code          Description
string
---------------------------------------------------------------------------
key_home        khome         kh                 home key
...
key_ll          kll           kH                 lower-left key (home down)

두 개와 두 개를 합치고 올바른 바인딩을 얻기 위해 약간의 추측을 수행하면 위의 수정 사항이 발생합니다.

관련 정보