Vim: insere linha vazia acima da linha atual (não aberta, ou seja, sem entrar no modo Inserir)


21

existe uma maneira de inserir uma nova linha acima da corrente, sem abrir a linha (sem entrar no modo Inserir)? Ou seja, como "O", mas sem abertura.


2
O que significa "abrir uma linha"?
Matteo Riva

"abrir uma linha" significa ir do modo normal para o modo de inserção, o que acontece quando você pressiona "O" (oh).
tmadsen

Respostas:


9

Eu uso o plugin de Tim Pope, sem igual, que possui um comando especificamente para esse fim:

[<space>

E se você deseja adicionar um espaço após a linha em que está:

]<space>


29

A definição do seu pedido é O.

Logicamente, ao inserir uma nova linha acima, seria O.

Para inserir antes do cursor: i
Depois: a
Antes da linha (home): I
Anexe no final da linha:A

O mais próximo que eu acho que você chegará é o Ique colocará o cursor no início da linha.


Talvez eu não estivesse claro. O cenário é o seguinte: estou no modo normal e quero inserir uma linha em branco acima daquela em que estou atualmente, enquanto permaneço no modo normal. Pressionar "O" me coloca no modo de inserção. Talvez não há nenhuma maneira de fazê-lo e isso é ok, apenas pensei que eu iria pedir :)
tmadsen

3
Apenas mapeá-lo,m`O+Esc`
Josh K

11
Boa ideia, não tinha considerado isso. A: noremap <leader> O O <ESC>
tmadsen

2tmadsen: Você pode mapear este <yourkey> O <ESC>
Dzung Nguyen

9
:h append()

Não moverá o cursor, permitirá inserir quantas linhas (vazias ou não) você desejar e não modificará a marca de posição anterior.

call append(line('.')-1, '')

Sim, isso é +1 puro! / me muda seu vimrc
akira

Bem, ele tem algumas vantagens quando se trata de scripts. É um pouco exagerado digitar o contrário.
Luc Hermitte

+1 para uma solução que funciona independentemente de como se definiuformatoptions
Micah Smith

5

Você pode mapear qualquer chave ou sequência de teclas que desejar

m`O<ESC>``

isso insere uma linha em branco acima da atual, mantendo-o no modo normal e sem alterar a posição do cursor.


então o comando para mapear isso para Alt-O seria: map <Mo> m`O <ESC> ``
K Robinson

Está correto.
Matteo Riva

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.