Existe um comando para dividir linhas no Vim?

15

No Vim, a Jchave une duas linhas. Existe uma combinação de teclas incorporada semelhante para dividir linhas com uma nova linha (na posição do cursor ou similar)?

Como alternativa, qual seria a maneira mais robusta de definir uma combinação de teclas para fazer isso (no modo normal, não no modo de inserção)?

Andrew Ferrier
fonte

Respostas:

16

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

Quando eu quero dividir em um <Space>, eu faço r<CR>.

--- EDIT ---

O comentário de @ keith-nicholas 'me lembrou essa pergunta. FWIW, inventei um método esperançosamente "universal" nesse meio tempo:

function! BreakHere()
    s/^\(\s*\)\(.\{-}\)\(\s*\)\(\%#\)\(\s*\)\(.*\)/\1\2\r\1\4\6
    call histdel("/", -1)
endfunction

nnoremap <key> :<C-u>call BreakHere()<CR>
romainl
fonte
4
Usar r<CR>é simplesmente inteligente! Obrigado!
Marcelo
11
isso é ótimo! Super chato ir para inserção de linhas de inserção
Keith Nicholas
Eu encontrei s<CR>mantém recuo enquanto r<CR>não.
toxefa 01/03/19
5

a Enter Escdividir à direita do cursor ou i Enter Escdividir à esquerda.

Scott
fonte
11
É isso. Basta inserir uma única nova linha. Como alternativa: use r + <retorno> para substituir o caractere sob o cursor por uma nova linha. Seria bom ter um comando de letra única para ele, mas até onde eu sei, não há um.
Tonny
2

A maneira mais fácil de dividir linhas no Vim é o comando no modo normal gq(digite as duas letras em rápida sucessão no modo normal ou visual):

  • No modo visual, ele dividirá o que for selecionado.
  • No modo normal, você segue gqcom um movimento.

Por exemplo, gqldividirá uma linha na largura definida no momento. Para definir a largura das linhas de divisão diferentes da sua configuração atual, você pode usar

:set textwidth=<n>

Onde n = número de caracteres que você deseja em uma linha, por exemplo, 10, e volte à sua largura normal quando terminar.

Obtenha essas informações em um vídeo do Youtube de Kholidfu que mostra como unir e dividir linhas no modo normal usando um movimento: Tutorial do Vim - Unir e dividir linhas .

vdicarlo
fonte
1

Você pode definir o seu próprio usando o mapa. Para definir z como o comando, por exemplo:

:map z i<CTRL+m>
suspeito
fonte
0

Você pode gravar uma macro:

no modo normal, digite "q +" para iniciar o registro. pressione "i", a macro que você deseja gravar. depois pressione "q" novamente para parar a gravação.

Para usar a macro, vá para o modo normal e digite "@ + letra".

no meu caso, usei o "b" para usar esta macro: para gravar o tipo no modo normal "qbiq" para usar o tipo no modo normal "@b"

luizhj
fonte