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.

tmadsen
fonte
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>

Eric Mathison
fonte
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.

Josh K
fonte
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, '')
Luc Hermitte
fonte
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.

Matteo Riva
fonte
então o comando para mapear isso para Alt-O seria: map <Mo> m`O <ESC> ``
K Robinson
Está correto.
Matteo Riva
2
:nmap <CR>_i<CR><ESC>
akira
fonte