vim에 빈 줄을 삽입 하시겠습니까?


25

vim에서 편집 할 때 현재 줄 아래 또는 위에 빈 줄을 삽입 해야하는 경우가 종종 있습니다. o그리고 O이 작업을 수행하지만, 이후 짜증나는 삽입 모드로 전환됩니다. 이 작업을 수행하는 기본 제공 명령이 정상 모드로 유지됩니까?

답변:


10

두 팀 교황의 손상되지 않은 플러그인 뿐만 아니라 내 자신의 LineJuggler는 플러그인 제공 [<Space>]<Space>매핑을 추가 할 수 [count]위의 빈 행을 / 현재 행보다.

기본적으로 다음과 같이 요약됩니다.

nnoremap <silent> ]<Space> :<C-u>put =repeat(nr2char(10),v:count)<Bar>execute "'[-1"<CR>
nnoremap <silent> [<Space> :<C-u>put!=repeat(nr2char(10),v:count)<Bar>execute "']+1"<CR>

나는 이것을 이것을 사용한다. 그래서 나는 이것을 "올바른"해결책으로 표시했다; 그러나 모든 대답은 훌륭합니다.
Andrew Ferrier

위대한 팁, 내가지도하는 것이 바람직하지만, <Space>o하고 <Space>O대신.
simlev

26

나는 이것을 사용하고있다

map <Enter> o<ESC>
map <S-Enter> O<ESC>

.vimrc몇 년 동안 내 .

Enter 를 눌러 현재 아래에 빈 줄을 삽입하고 Shift + Enter 를 눌러 위에 삽입하십시오.


이 답변은 모두 훌륭하지만 가장 간단한 해결책 이므로이 올바른 것으로 표시하고 있습니다.
Andrew Ferrier 2013 년

너무 간단합니다! 이것이 정답입니다!
Sheharyar

Enter 키를 누를 때 커서가 움직이지 않게 k하려면 첫 번째 맵의 끝과 두 번째 맵의 끝에 놓으십시오 j.
zondo

1
Shift-Enter 맵핑은 터미널 버전이 아닌 vim의 GUI 버전에서만 작동합니다. stackoverflow.com/questions/16359878/vim-how-to-map-shift-enter
ishmael

7

위 또는 아래에 선을 삽입하는 또 다른 방법 :

nnoremap <Enter> :call append(line('.'), '')<CR>
nnoremap <S-Enter> :call append(line('.')-1, '')<CR>

romainl과 Mr Shunz의 솔루션은 커서를 새로 삽입 된 라인으로 이동하는 반면 Ingo Karkat의 솔루션은 커서를 동일한 지점에 유지합니다.


1

아니요, 기본 제공 명령이 없습니다.

이 매핑은 원하는 것을 수행합니다.

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