Vim에 단일 문자를 삽입 하시겠습니까?


25

Vim (7.2) r에는 단일 문자를 다른 문자로 바꾸는 일반 모드 명령 이 있습니다. 예를 들어, 입력 rX하면 커서 아래의 한 문자가로 바뀌고 X일반 모드로 돌아갑니다.

단일 문자를 삽입 한 다음 일반 모드로 돌아가는 일반 모드 명령이 있습니까?



포괄적 인 솔루션 은 vim.wikia.com/wiki/Insert_a_single_character 를 참조하십시오 .
Maxim Suslov

답변:


6

MelBurslan은이 기능이 기본적으로 존재하지 않는 것이 맞지만 사용자 정의 명령을 작성하는 것이 실제로 작성하는 방법이 아닙니다. 나는 몇 분 동안 땜질을하고 이것을 생각해 냈습니다.

:nmap <silent> ,s "=nr2char(getchar())<cr>P

레지스터에서 "퍼팅"텍스트 (이 경우 "식"레지스터)와 관련된 Vim 트릭을 사용합니다. 레지스터에 연결되는 표현식은 " nr2char(getchar())"이며 단일 문자열을 반환합니다.

내가 이런 식으로 매핑을 만든 이유는 사용자 입력을 "중간"으로 가져 오는 것이 까다 롭고 예측할 수 없기 때문입니다. 이 매핑조차도 사용자가 문자를 입력 할 때까지 커서를 상태 영역으로 드롭합니다.


8

아래 의견에이 훌륭한 답변을 주신 Johnny에게 감사드립니다.

":nmap <C-i> i_<Esc>r"

Control + i를 매핑하여 단일 문자를 삽입하고 매우 간결하게 수행합니다.

vimrc 파일에서 다음과 같이 나타납니다.

nnoremap <C-i> i_<Esc>r

공간을 사용하도록 매핑을 변경했으며 원하는 키로 변경할 수 있습니다.

nnoremap <Space> i_<Esc>r

1
이것은 가장 간결하고 간단한 답변입니다.
Dylanthepiguy

4

내가 아는 한, vi 편집기의 널리 분산 된 구현에는 그러한 기능이 없지만 vim에는 사용자 정의 명령을 작성하는 기능이 있습니다. 이전에 여기에서 논의되었습니다 : 이 스레드에서

원하는 작업을 수행하여 사용자 정의 명령을 작성할 수 있습니다.


3
다음은 단일 문자를 삽입하기 위해 Ctrl-I를 매핑하는 명령입니다. ": nmap <Ci> i_ <esc> r"
Johnny

2

이를 수행하는 간단한 방법은 Cut x및 Put p명령을 사용하는 것 입니다. *삽입하려는 문자 라고 가정하십시오 . 을 사용하여 삽입하십시오 i * Esc. 그런 다음를 누르십시오 x. 캐릭터가 잘릴 것입니다. 이제, 당신은 p단일 문자를 넣을 수 있습니다 . 해당 문자를 300 번 삽입해야하는 경우 다음을 입력 할 수 있습니다 300p..

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.