유닉스 vi 편집기: ^J 매핑

유닉스 vi 편집기: ^J 매핑

나는 "learning vi editor"(Linda Lamb & Arnold Robbins 6th edition)라는 책을 읽고 있습니다. 115페이지에 이 책에는 다음과 같은 명령이 있습니다.

:map ^J xyz

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

ctrl+ V ctrl+ j( 예를 들어 ctrl+는 vEnter를 이스케이프하는 데 사용할 수 있음) 및 ctrl+를 j직접 시도했습니다.

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

저는 FreeBSD 11.0에서 vi 편집기를 사용하고 있습니다. vim (vi Improved) 가 아닙니다.

----- 편집하다 -----

동영상:

https://vimeo.com/212400468

00:05 - dd를 수행하기 위해 ctrl+K 매핑(전체 줄 삭제)

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

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

00:33 - 정확히 "^J" 지도를 사용해 보세요.

00:44 - Ctrl+J를 사용해 보세요. 예상대로 작동하지 않습니다. "^J" 시퀀스를 입력하면 작동합니다.

답변1

실제로는 책에 오류가 있는 것 같습니다. 예제 뒤에는 다음 주석이 나옵니다.

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

에 대한 일반적인 추론^J이다 controlJ. 그러나 6판에서 언급된 vi 중 어느 것도 텍스트에 문자 그대로의 control/J를 삽입하는 것을 허용하지 않았습니다. 왜냐하면 이것이 Unix 계열 시스템의 줄 끝이기 때문입니다(vim은^@ control/J를 탈출하려고 시도할 때 null 문자를 제공합니다. 다른 편집자들은 이를 무시합니다). ㅏ오자"^J "는 주석과 함께 작동하지 않습니다. 왜냐하면 해당 문자는 주석이 아니기 때문입니다.vi명령.

당신은 만들 수 있습니다오자물론 " ^J" 일이죠. 그러나 그것은 그 예의 요점이 아니었습니다. 아마도 작가는 다른 흥미로운 캐릭터를 의도하고 어떤 이유로든 변경했을 것입니다.

관련 정보