붙여넣기 위해 비ASCII 값을 이스케이프 처리하는 Vim

붙여넣기 위해 비ASCII 값을 이스케이프 처리하는 Vim

와 같은 비ASCII 문자가 포함된 VIM 레지스터의 문자열을 붙여넣으려고 합니다. Ctrlr이 문자열을 파일에 붙여넣고 비ASCII 문자를 자동으로 이스케이프하려면 어떻게 해야 합니까?

본질적으로 내가 달성하려는 것은 CtrlWvim이 ^W로 표시하는 것과 같은 일부 (ASCII가 아닌) 문자가 있는 매크로를 기록하는 것입니다. 매크로를 가져오고(레지스터를 검사하고 매크로 문자열(예: @a=^W)을 가져옴) 키 맵으로 .vimrc 파일에 복사하여 키를 누를 때 매크로가 작동하도록 하고 싶습니다. 해당 매크로를 실행합니다.

CtrlW.vimrc 파일이나 붙여넣기할 때마다 ^W를 변경할 필요 없이 자동으로(또는 가능한 한 빨리) 이 작업을 수행하고 싶습니다 .

답변1

가장 먼저,제어 시퀀스 ASCII 범위 내에 있습니다.( ^W코드 포인트 23) 그러나 그들은 소위인쇄할 수 없음문자. ~/.vimrc터미널 선택 및 붙여넣기가 아닌 Vim 레지스터를 사용하는 한 해당 내용을 파일에 그대로 붙여넣을 수 있습니다 .탈출은 필요하지 않습니다. ( 의 파일 형식에 따라 ^J및 에만 문제가 있을 수 있습니다 .)^M~/.vimrc

즉, 이러한 제어 시퀀스를 이스케이프하는 간단한 대체 방법은 다음과 같습니다.

:echo substitute("example: \<C-A>\<C-Z>", '[\x00-\x1f]', '\="<C-" . nr2char(char2nr(submatch(0)) + 64) . ">"', 'g')

관련 정보