유닉스 vi 편집기: mapping^J

유닉스 vi 편집기: mapping^J

저는 "Vi Editor 배우기"(Linda Lamb 및 Arnold Robbins, 6판)라는 책을 읽고 있습니다. 책 115페이지에는 다음과 같은 순서가 있습니다.

:map ^J xyz

xyz 부분 자체는 여기서 중요하지 않습니다. 내 문제는 그 ^J부분을 만드는 것입니다.

나는 ctrl++ V ctrl( j예: ctrl+를 v사용하여 Enter를 탈출할 수 있음) 를 시도하고 ctrl+를 직접 시도했습니다.j

두 경우 모두 작동하지 않습니다.

저는 FreeBSD 11.0에서 vim(vi 개선)이 아닌 vi 편집기를 사용하고 있습니다.

- - - 편집하다- - -

동영상:

https://vimeo.com/212400468

00:05 - ctrl+K를 매핑하여 dd 실행(전체 줄 삭제)

00:19 - Ctrl+J를 사용하여 동일한 작업을 수행하려고 시도했지만 Ctrl+J가 테이블을 트리거하기 때문에 작동하지 않습니다.

00:25 - Ctrl+V Ctrl+J를 사용하여 다시 시도하세요. 작동하지 않아 테이블이 트리거됩니다.

00:33 - "^J"를 정확하게 매핑해 보세요.

00:44 - Ctrl+J를 사용해 보았지만 예상대로 작동하지 않았습니다. "^J" 시퀀스를 입력할 수 있습니다.

답변1

사실 이 내용은 책에 나온 버그인 것 같습니다. 이 예제 뒤에는 다음 설명이 나옵니다.

이전 예에서는^Jcommand(커서를 한 줄 아래로 이동), 이 키는 실제로 command 와 동일하므로 안전하게 매핑될 수 있습니다 j. 다른 키와 동일한 작업을 수행하거나 거의 사용되지 않는 키가 많이 있습니다. 그러나 다음 사항에 대해 잘 알고 있어야 합니다.명령을 맵 정의에서 사용하여 일반적인 사용을 대담하게 비활성화할 수 있습니다.

일반적인 추론은^JcontrolJ. 그러나 6판에 언급된 vi 중 어느 것도 텍스트에 control/J를 삽입하는 것을 허용하지 않습니다. 이는 Unix 계열 시스템의 줄 종결자이기 때문입니다( ^@control/J를 벗어나려고 하면 vim에서 null 문자가 표시됩니다). , 그렇지 않으면 이를 무시하도록 편집됨). ㅏ단어" ^J"는 댓글에 적용되지 않습니다. 왜냐하면 이러한 문자는 주석에 적용되지 않기 때문입니다.주문하다.

당신은 할 수 있습니다단어^J"물론 일이지. " 하지만 이 예의 요점은 그게 아닙니다. 작가가 다른 흥미로운 캐릭터를 원했고 어떤 이유로 변경했을 가능성이 있습니다.

관련 정보