Vim (7.2) r
에는 단일 문자를 다른 문자로 바꾸는 일반 모드 명령 이 있습니다. 예를 들어, 입력 rX
하면 커서 아래의 한 문자가로 바뀌고 X
일반 모드로 돌아갑니다.
단일 문자를 삽입 한 다음 일반 모드로 돌아가는 일반 모드 명령이 있습니까?
답변
MelBurslan은이 기능이 기본적으로 존재하지 않는 것이 맞지만 사용자 정의 명령을 작성하는 것이 실제로 작성하는 방법이 아닙니다. 나는 몇 분 동안 땜질을하고 이것을 생각해 냈습니다.
:nmap <silent> ,s "=nr2char(getchar())<cr>P
레지스터에서 “퍼팅”텍스트 (이 경우 “식”레지스터)와 관련된 Vim 트릭을 사용합니다. 레지스터에 연결되는 표현식은 ” nr2char(getchar())
“이며 단일 문자열을 반환합니다.
내가 이런 식으로 매핑을 만든 이유는 사용자 입력을 “중간”으로 가져 오는 것이 까다 롭고 예측할 수 없기 때문입니다. 이 매핑조차도 사용자가 문자를 입력 할 때까지 커서를 상태 영역으로 드롭합니다.
답변
아래 의견에이 훌륭한 답변을 주신 Johnny에게 감사드립니다.
":nmap <C-i> i_<Esc>r"
Control + i를 매핑하여 단일 문자를 삽입하고 매우 간결하게 수행합니다.
vimrc 파일에서 다음과 같이 나타납니다.
nnoremap <C-i> i_<Esc>r
공간을 사용하도록 매핑을 변경했으며 원하는 키로 변경할 수 있습니다.
nnoremap <Space> i_<Esc>r
답변
내가 아는 한, vi 편집기의 널리 분산 된 구현에는 그러한 기능이 없지만 vim에는 사용자 정의 명령을 작성하는 기능이 있습니다. 이전에 여기에서 논의되었습니다 : 이 스레드에서
원하는 작업을 수행하여 사용자 정의 명령을 작성할 수 있습니다.
답변
이를 수행하는 간단한 방법은 Cut x및 Put p명령을 사용하는 것 입니다. *
삽입하려는 문자 라고 가정하십시오 . 을 사용하여 삽입하십시오 i * Esc. 그런 다음를 누르십시오 x. 캐릭터가 잘릴 것입니다. 이제, 당신은 p단일 문자를 넣을 수 있습니다 . 해당 문자를 300 번 삽입해야하는 경우 다음을 입력 할 수 있습니다 300p
..