Vim의 삽입 모드에서 문자를 반복하는 방법이 있습니까? 예를 들어, 80 개의 대시를 emacs와 같은 곳에 삽입하고 싶다고 가정하십시오.
Ctrl+U 8 0 -
VIM에서 수행하는 방법을 알고있는 유일한 방법은 반복 인수에 대해 일반 모드를 종료 한 다음 삽입 모드로 돌아가 대시를 입력 한 다음 종료하여 실제 대시를 삽입 한 다음 삽입 모드로 돌아가서 계속 진행하는 것입니다. 타자. 순서는 정말 길다 :
Esc 8 0 a - Esc a
모드를 전환하지 않는 것이 좋습니다.
답변
약간 다른 버전의 Eelvex 솔루션 :
function! Repeat()
let times = input("Count: ")
let char = input("Char: ")
exe ":normal a" . repeat(char, times)
endfunction
imap <C-u> <C-o>:call Repeat()<cr>
답변
INSERT 모드를 한 번만 (끝에) 종료해도 괜찮 으면이 시퀀스가 작동합니다.
Ctrl+o 80i-
Esc
- Ctrl+ o는 INSERT 모드를 벗어나지 않고 일반 명령을 실행하는 데 사용됩니다.
80
반복i
삽입-
삽입하려는 캐릭터- Esc INSERT 모드를 종료합니다.
INSERT 모드를 떠나지 않은 다른 하나 :
Ctrl+o :norm 8ia
Return
답변
Escnic Esc Esc.
예 Esc4iJEsc Esc를 들어 출력 JJJJ
합니다.
답변
<ESC>
<the number of times you want to repeat>
i
<the char you want to repeat>
<ESC>
for example: <ESC>12ia<ESC> will insert 12 a's.
답변
단일 반복을 통해 :
Insert mode
-
Esc
80.
단일 반복에 대한 자세한 내용 : :help .
답변
당신은 또한 할 수 있습니다
Escnihello there EscEsc
여기서 n은 반복 횟수입니다.
예를 들어
Esc5ihello there EscEsc
답변
다른 많은 방법이 있지만 AFAIK는 가장 짧은 방법입니다. vim 에서는 대부분 명령 모드에서 시간을 보내야하므로 3 번의 키 입력 + 반복 횟수 (80i-)입니다.
그러나이 반복적 인 일을 자주 사용한다는 것을 알게되면 그 목적에 맞는 기능이나 매크로를 만들 수 있습니다. 아마도 다음과 같은 것 :
:function Repeat(char)
: let counter = input("How many times?: ")
: call feedkeys("i")
: call feedkeys(repeat(a:char,counter))
:endfunction
:imap <C-U> <ESC>h"ryl :call Repeat(@r)<CR>