나는 종종 다음을 누른다:
<Ctrl> V
시각적 차단 모드로 들어가서 열 강조 표시- (행의 시작 부분에 삽입)을 클릭
<shift>-i
하고 내용을 입력합니다(이 시점에서 첫 번째 행에는 변경 사항이 표시되지만 다른 행에는 변경 사항이 표시되지 않습니다). - 그런 다음 클릭하여
<Esc>
일반 모드로 돌아갑니다.
을 클릭하면 <Esc>
삽입한 내용이 다른 행마다 배치되는 것을 볼 수 있습니다.
내가 원하는 것은 첫 번째 행뿐만 아니라 입력할 때 각 행의 변경 사항을 시각적으로 확인하는 것입니다. 그게 가능합니까?
Visual Block으로 이동하여 여러 행을 선택하십시오.
텍스트를 추가하세요- 바꾸고 싶은 부분이다. 첫 번째 줄뿐만 아니라 모든 줄에서 공백이 즉시 표시되기를 원합니다.
치고 탈출- 이제 각 줄에 공백이 추가됩니다. 이런 일이 더 빨리 일어나길 바랍니다.
나는 이 예에서 하고 있는 일을 달성하기 위해 그것을 사용할 수 있다는 것을 알고 있습니다 >>
.나는 내가 바꾸고 싶은 것을 설명하기 위해 간단한 예를 선택했습니다.
감사해요!
답변1
이것을 당신의vimrc:
nmap <buffer> <silent> <expr> <F12> InsertCol()
imap <buffer> <silent> <expr> <F12> InsertCol()
function! InsertCol()
let w:first_call = exists('w:first_call') ? 0 : 1
"if w:first_call
" startinsert
"endif
try
let char = getchar()
catch /^Vim:Interrupt$/
let char = "\<Esc>"
endtry
if char == '^\d\+$' || type(char) == 0
let char = nr2char(char)
endif " It is the ascii code.
if char == "\<Esc>"
unlet w:first_call
return char
endif
redraw
if w:first_call
return char."\<Esc>gvA\<C-R>=Redraw()\<CR>\<F12>"
else
return char."\<Esc>gvlA\<C-R>=Redraw()\<CR>\<F12>"
endif
endfunction
function! Redraw()
redraw
return ''
endfunction
그런 다음 Ctrl-vI평소처럼 을 누른 다음 를 누릅니다 F12. 각 키 입력으로 변경된 모든 행을 삽입하고 표시합니다.
F12I참고: 매번 누르는 것보다 눌러서 삽입 모드로 들어가면 스크립트가 더 좋을 것입니다 . 어쩌면 startinsert
명령의 조합으로 vnoremap
이를 수행할 수도 있습니다.