Como posso mover X bytes para frente, começando na localização atual do cursor (incluindo quebras de linha)?
[count]go
pode ser usado para avançar X bytes desde o início do buffer. Eu tentei Shift + V, G, [count]go
(supondo que [count]go
isso começaria a contar desde o início da minha seleção), mas infelizmente isso também não funcionou porque go
apenas começa a contar desde o início do buffer.
Também tentei :set rulerformat=%o
exibir o deslocamento de bytes atual (como sugerido por Saltando para um deslocamento de bytes e exibindo a posição como deslocamento de bytes ), adicionei os números na minha cabeça e finalmente emiti [count]go
. Isso funciona, mas não é muito prático ...
cursor-movement
binary-file
Rob W
fonte
fonte
Xl
(ondeX
está o número de caracteres) ou o número de caracteres seguido pela seta para a direita.Respostas:
Essa pesquisa move 40 caracteres (mas não bytes) para a frente:
pesquisando exatamente 40 caracteres (
\{40}
) de qualquer tipo, incluindo nova linha (\_.
) e colocando o cursor no final da pesquisa (/e
). Veja: http://vimregex.com/#Non-Greedy ,:help search-offset
e:help \_
Veja também
:h 23.4
para edição binária.Atualização: Com base nesta resposta, aqui está uma função que salta para deslocamento de bytes:
Pode ser usado assim:
ou digitando o mapeamento do teclado mapeado, com uma contagem:
Se você não usar uma contagem, o número da contagem anterior será reutilizado. Então você pode fazer:
40CTRL-C CTRL-C CTRL-C 30CTRL-C CTRL-C
pular 40, 40, 40, 30, 30 bytes etc.Clique
Ctrl-O
para voltar (consulte os comentários dentro da função).fonte
[count]go
processo em uma função vim (leia o deslocamento de bytes atual, adicione o número desejadogo
).[count]go
e seu método: 1)[count]go
adiciona um item à lista de saltos, para que eu possa usarCtrl+O
para voltar rapidamente à minha posição anterior. 2)[count]go
pode ser usado sem:
, é possível introduzir um novo[count]GO
que faz a sua coisa. Você poderia editar sua resposta para também corresponder ao comportamento dego
?Acabei usando a seguinte solução, que implementa a lógica da minha pergunta.
[count]GO
para mover[count]
bytes para frente.[count]Go
para mover[count]
bytes para trás.Adicione isso ao seu
.vimrc
:Agradeço a VanLaser por sua implementação inicial, o que me colocou na direção certa.
fonte