Meu cursor está no meio de um parágrafo quando decido de repente que preciso copiar esse parágrafo:
Então, digito vip
para selecionar o parágrafo visualmente:
Agora, clico cmd+C
em copiar para a área de transferência (isso pode variar no seu sistema, mas não deve ser relevante para a pergunta central da minha postagem), o que deixa meu cursor no início do parágrafo:
em vez da posição desejada, que era onde estava quando comecei.
Observe que o mesmo problema ocorre ao puxar a seleção não visualmente yip
.
Eu gostaria que o comportamento padrão fosse "retornar à posição original do cursor" depois de executar ações de seleção / cópia como esta. Existe uma configuração que torne isso possível?
vimscript
vimrc
cursor-movement
Jonah
fonte
fonte
mm "+yap `m
(Note que"+y
arrancos para a área de transferência do sistema)Respostas:
Uma solução possível é usar saltos:
Antes de puxar ou selecionar visualmente, você pode definir um novo salto que poderá acessar depois que o cursor se mover. Para fazer isso, use m`.
Depois que o cursor foi movido por causa do uso dos puxões ctrlopara voltar à lista de saltos. Você também pode ver a lista dos saltos disponíveis
:jumps
e navegar nessa lista com ctrloectrliPara resumir seu fluxo de trabalho, seria:
Como o uso de m` define uma marca, você pode pular para ela com, em ``vez de ctrlo.
Você pode ler
:h mark-motions
e:h :jumps
obter mais informações.fonte
<leader>'
de ser`
, o que funciona muito bem para mim. (Eu uso<space>
como meu líder.):h 'langmap'
. Não estou dizendo que é a solução ideal, mas talvez possa ser interessante para você.noremap ' `
noremap ` '
... Esta é, na minha vimrc e funciona muito bemVocê pode evitar mover o cursor com:
Ver
:help range
,:help mark-motions
e:help :y
.fonte
:nmap <key> :'{,'}y<CR>
deve fazer o trabalho.Se você acabou de editá-lo, a solução mais simples é digitar o g ;que posicionará o cursor na última posição de edição.
E se você não tiver editado o parágrafo, poderá fazer uma operação simples de substituição com o mesmo caractere em que você está (por exemplo, você está
h
digitandorh
) para acionar um "evento" de edição sem realmente editar nada.fonte
'.
, mas pode ser muito útil navegar entre as últimas alterações comg;
eg,
.g;
que leva você para a posição correta da coluna também?O plug-in vim-easyclip possui uma configuração para isso:
É um pouco demais para eu instalar um plugin inteiro apenas para esse pequeno recurso, então prefiro usar marcas conforme meu comentário.
fonte
Estendendo a resposta de Al.G., podemos ir para o local necessário sem editar. Solução é gi. Chegamos à mesma posição em que estávamos no último modo de inserção anterior.
Se queremos ir para o início ou final do texto destacado.
Ao puxar o texto realçado, você também retornará ao modo normal e poderá ou não manter a posição original do cursor.
Retornando ao local original após puxar:
gv para obter o destaque anterior.
Agora você pode alternar entre o local original e o atual no modo visual com a tecla
oou O.
O número da linha e da coluna da linha de status ajudará a saber a posição exata do cursor.
Documentação:
fonte
vip
quando o cursor inicia no meio de um parágrafo.vip
verificar minha edição.