PageDown 및 PageUp 키를 정상적으로 작동하도록 매핑하는 방법

PageDown 및 PageUp 키를 정상적으로 작동하도록 매핑하는 방법

vi또는 을 사용하여 문서를 열 때 및 키를 vim사용하여 페이지를 탐색할 수 없습니다 . 이 키를 누르면 vim이 비정상적으로 작동하는 것처럼 보이며 커서 아래에 있는 문자의 대소문자가 변경됩니다. 그런 다음 모드로 다시 돌아오는 데 몇 초가 걸립니다 .Page UpPage Downinsert

이 키를 매핑하는 방법을 알려주십시오. 그러면 Ctrl+( f/ b/ u/ d )처럼 페이지를 부드럽게 스크롤할 수 있습니다.

업데이트

기계 및 Vim 정보

$ cat /etc/*-release  
Red Hat Enterprise Linux Server release 5.5 (Tikanga)


$ vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Jun 12 2009 07:08:36)

메모

이 컴퓨터에 연결하기 위해 Putty를 사용하고 있습니다.

답변1

업데이트:

Putty를 사용하여 이 컴퓨터에 연결하고 있습니다.

그런 다음 올바르게 추측했으며 아래 답변이 아마도 적용될 것입니다.


원래 답변:

귀하의 질문에 귀하의 문제를 확신할 만큼 정보가 충분하지 않습니다. 기다리는 동안 청중에게 간단한 이야기를 제공하겠습니다.

터미널 에뮬레이터 및 편집기

Putty와 같은 xterm 에뮬레이터를 사용하여 Linux 컴퓨터에 액세스하는 경우 PgUp 키는 4개의 문자를 Escape [ 5 ~Linux 시스템으로 보냅니다.

Linux 시스템은 이를 처리한 다음 실행되지 않은 키 입력을 애플리케이션에 전달합니다.

vim 애플리케이션은 시스템 라이브러리를 사용하여 환경 변수 TERM의 값과 해당 항목을 기반으로 문자 시퀀스를 다시 "키"로 변환합니다.terminfo

terminfo가 PgUp(또는 다른 키)을 로 정의하지 않으면 Escape [ 5 ~Vim은 (아마도) 네 문자를 개별적으로 처리할 것입니다.

"많은 커서 키 코드가 Esc 키로 시작합니다. Vim은 이것이 Esc 키를 한 번 눌렀는지 아니면 커서 키 시퀀스의 시작인지 확인해야 합니다. Vim은 다음 문자가 도착할 때까지 기다립니다. 1초 이내에 도착하지 않으면 단일 Esc가 가정됩니다."그래서 vim은 Esc가 삽입 모드를 종료하려는 것인지 확인하기 위해 잠시 기다립니다.

[5유효한 Vim 명령입니다 . 하지만 Vim은 Esc를 자신이 인식하지 못하는 이스케이프 시퀀스의 시작을 알리는 신호로 간주할 수도 있습니다. Vim은 해당 시퀀스가 ​​끝나는 위치를 추측하고 해당 지점에서 문자를 명령이나 데이터로 해석하기를 다시 시작해야 합니다.

~커서 아래에 있는 문자의 대/소문자를 전환하는 vim 명령입니다.

해피 엔딩

TERM을 올바르게 설정하고(Putty/에뮬레이터 설정과 일치하도록) terminfo에 PgUp 등의 정의가 있는지 확인하십시오. Unix-land에서는 IBM PC가 탄생하기 전에 키보드가 존재했으며 일부 키보드에는 키가 있으므로 Previous Page이 키 기능의 이름은 입니다 kpp.

  $ infocmp xterm | grep kpp
    knp=\E[6~, kpp=\E[5~, kri=\E[1;2A, mc0=\E[i, mc4=\E[4i,

추신

이 키를 매핑하는 방법

내가 아는 한 Putty에는 임의의 키 매핑 기능이 없습니다(위시리스트에 있었던 것 같습니다). 그래서...

  1. 잘 알려지고 정의된 터미널 유형을 에뮬레이트하도록 Putty를 구성합니다. 불행히도 xterm과 같은 작업이 수행되어야 하는 것은 없습니다.

  2. Putty가 Linux 상자에 에뮬레이션하는 터미널 유형을 알려주는지 확인하십시오. 부분적으로는 Putty의 설정을 구성하고 부분적으로는 TERM과 통신하지 않는 프로토콜(Putty의 텔넷 지원) 대신 TERM을 통신하는 프로토콜(예: Putty의 ssh 지원)을 사용하여 이루어집니다.

  3. TERM이 실제로 올바른 값( echo $TERM)으로 설정되어 있는지 확인하십시오.

  4. 해당 TERM 값에 대한 terminfo 항목이 원하는 키를 정의하는지 확인하세요(위 참조).

  5. PgUp 키가 필요한 내용을 전송하는지 확인하세요. Vim에서 삽입 모드로 들어가서 Ctrl+를 누른 V다음PgUp

답변2

TERM=xterm을 내보내면 문제가 해결됩니다.

관련 정보