Notei que, ao editar uma linha em um arquivo .txt no modo de inserção, o cursor se moverá para o início da linha após uma gravação usando a sequência de teclas:
<esc>:w
Eu gostaria de mudar esse comportamento para que o cursor fique na posição seguinte a: write. Isso é possível? Não preciso que o cursor permaneça no modo de inserção, gostaria que ele mantivesse sua última posição após uma gravação.
Estou usando o gVim 7.4 no Windows. Meu .vimrc é muito básico, não acredito que nenhuma das minhas configurações interfira nesse comportamento. Também removi a fonte do mswin.vim e example.vim do meu .vimrc (fornecido com o instalador oficial do Windows do vim.org).
Depois de ler os comentários abaixo, analisei o problema novamente e percebi que o cursor só desliza para a extrema esquerda após uma gravação em linhas totalmente compostas por espaços em branco à direita. Em outras palavras, o cursor desliza apenas para a extrema esquerda após esc-: w quando a linha é um recuo pendente sem outros caracteres além de espaços . O .vimrc está manipulando comportamentos de indentação com estas configurações:
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
Portanto, uma nova linha criada abaixo de uma linha recuada conterá 4 espaços em branco à direita como os 4 primeiros espaços da linha (que eu quero manter). Após a tecla 'esc', pressione o cursor desliza para a extrema esquerda do buffer.
Existe uma maneira de manter a posição do cursor ao pressionar 'esc' para retornar ao modo normal, em uma linha composta por espaços em branco à direita (como indentação)?
fonte
gvim -u NONE -U NONE
(você pode usar o cmd.exe ou criar um atalho)? Isso impedirá o carregamento dos arquivos (g) vimrc.Respostas:
Examinar a documentação do autoindent tem uma resposta sobre o porquê e como solucionar o problema.
:help 'autoindent'
:Em outras palavras, se você não perder o recuo, digite algo e depois retroceda antes de bater Esc, e o espaço inicial permanecerá.
Como alternativa, se você deseja apenas retornar ao nível de indentação quando voltar ao modo de inserção e também estiver usando
'cindent'
, use em Shift-Svez de i, o que limpará a linha (já vazia) e iniciará no nível de indentação apropriado. Essa não é uma solução tão geral quanto a acima, mas prefiro isso quando estou escrevendo código C, para que meus arquivos não sejam salvos com apenas linhas em espaço em branco.fonte
nnoremap o o <BS><Esc><DEL>
, ennoremap O O <BS><Esc><DEL>