Inserir uma linha em branco no vim?


25

Frequentemente, acho necessário inserir uma linha em branco abaixo ou acima da linha atual ao editar no vim. oe Ofará isso, mas posteriormente eles mudam para o modo de inserção, o que é irritante. Existe algum comando interno para fazer isso que permanecerá no modo normal?

Respostas:


10

Tanto o plugin intacto de Tim Pope quanto o meu próprio plugin LineJuggler fornecem [<Space>e ]<Space>mapeamentos para adicionar [count]linhas em branco acima / abaixo da linha atual.

Basicamente, tudo se resume a isso:

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>

Agora eu uso isso, então marquei isso como a solução "correta"; mas todas as respostas aqui são ótimas.
Andrew Ferrier 12/10

Grande dica, embora eu preferido para mapear <Space>oe <Space>Oem vez disso.
simlev 28/03

26

Eu tenho usado esses

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

na minha .vimrcpor anos.

Pressione Enter para inserir uma linha em branco abaixo da atual, Shift + Enter para inseri-la acima.


Estou marcando isso como correto, pois é a solução mais simples, embora todas essas respostas sejam boas.
Andrew Ferrier

Tão simples! Esta deve ser a resposta aceita!
Sheharyar 26/10/2015

Se você não quiser que o cursor se mova ao pressionar Enter, coloque kno final do primeiro mapa e jno final do segundo mapa.
Zondo

1
Observe que o mapeamento Shift-Enter funciona apenas com a versão da GUI do vim, não com a versão do terminal. stackoverflow.com/questions/16359878/vim-how-to-map-shift-enter
ishmael

7

Outra maneira de inserir linhas acima ou abaixo:

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

Observe que a solução de romainl e Shunz moverá o cursor para a linha recém-inserida, enquanto essa e também a de Ingo Karkat manterão o cursor no mesmo local.


1

Não, não há comando interno para isso.

Esses mapeamentos fazem o que você deseja:

nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.