Gostaria de saber se posso inserir uma nova linha sem sair do modo normal. Por exemplo, eu tenho duas linhas:
this is line one
this is line two
E o cursor está na linha um. Agora eu quero uma nova linha entre a linha um e a linha dois, assim:
this is line one
this is line two
Sei que quando estou no modo normal, posso simplesmente pressionar o
. Mas isso entraria no modo de inserção.
Como posso inserir uma nova linha como e permanecer no modo normal?
normal-mode
Alex
fonte
fonte
Respostas:
Eu uso um mapeamento para isso:
Dessa forma, você pode inserir uma linha sob o cursor com
<Leader>o
e uma na linha anterior com<Leader>O
.Nota: Pode-se argumentar que isso exige o número de pressionamentos de teclas,
o<Esc>
mas espero que você tenha escolhido seu líder para facilitar esse tipo de mapeamento. Também não tenho certeza se existe uma maneira integrada de fazer isso.fonte
Uma solução que não passa pelo modo de inserção, não move o cursor e permite que você use um contador para acrescentar várias linhas ao mesmo tempo ( 3\oetc.):
fonte
Eu, pessoalmente, recomendo usar o plugin Unimpaired de Tim Pope . Ele fornece muitos mapeamentos, mas os que você procura são
[<space>
e]<space>
criam linhas em branco acima e abaixo da linha atual, respectivamente. O Unimpaired também fornece bons mapeamentos para percorrer a lista de correções rápidas, a lista de buffers, a alternância de opções e muitas outras. Veja:h unimpaired
para mais.Se você não deseja usar um plug-in intacto, mas, como os mapeamentos abaixo, existem alguns mapeamentos rápidos para colocar em seu
~/.vimrc
arquivo:fonte
Se você não deseja adicionar mapeamentos, pode puxar
yy
uma linha vazia e coláp
-la abaixo do cursor eP
acima do cursor.fonte
o
registro"oyy
e cole-o a partir daí sempre que necessário"op
.Meu mapeamento usa
Shift-Enter
. Difere dos demais, pois o cursor é retornado para a mesma linha e coluna usando a marca o.fonte
<S-Enter>
não funciona em emuladores de terminal (ele funciona apenas no gVim). Então você terá que escolher uma combinação de teclas diffferent para mapeá-lo para ;-)Esta resposta de Maxim Kim foi transformadora:
e meu riff:
Coloque essas linhas no seu
vimrc
. Então vá para o início da segunda linha do seu arquivo e hit Space, Enterou ir para o final da primeira linha e hit Shift+Space, Enter. Você adicionará a linha vazia entre a primeira e a segunda linhas e o deixará no modo normal.Você também pode usá-los para qualquer outra tecla - pressionada Spaceou Shift+Spaceseguida pela tecla desejada e ela será inserida ou anexada, respectivamente.
fonte
Esses mapeamentos farão exatamente o que você está procurando.
Eles inserem n número de novas linhas antes ou depois do cursor; mantendo o cursor exatamente onde está, sem alterar a lista de atalhos.
Outra solução é apenas criar um atalho que preencha o registro sem nome com uma nova linha. Então você pode simplesmente usar os comandos put, p ou P para inserir novas linhas. Por exemplo:
fonte
Meu mapeamento para isso
Diferente do statox, pois mantém o cursor no mesmo local.
fonte
<silent>
significa:h map-silent
.Minha solução pessoal coloca um caractere de nova linha no registro de expressão e o cola após a linha atual e depois volta à posição original:
fonte