Vá para o meio da linha no vim

14

Eu sei que 0 vai para o início da linha e $ vai para o fim, mas há algo para o meio?

teggy
fonte

Respostas:

11
:call cursor(0, len(getline('.'))/2)
efémero
fonte
4
Isso seria bastante útil se fosse mapeado, por exemplo:: nnoremap gm: call cursor (0, len (getline ('.')) / 2) <cr>
Heptite
3
virtcol ('$') / 2 é suficiente.
precisa
@ Luc Hermitte: Bom, mas não é exatamente o melhor comportamento quando há guias rígidas.
ephemient 30/11/10
É por isso que eu uso virtcol em vez de col. :). Mas, de fato, devemos usar | e não cursor (). BTW, len () não dará nenhum resultado melhor. Além disso, o len dará outros problemas com caracteres de vários bytes.
Luc Hermitte 30/11
8

A digitação gmfaria isso, mas se moveria pelas linhas da tela (consulte :help gm). Para fazê-lo funcionar com linhas de texto, pode-se remapear este comando:

map gm :call cursor(0, virtcol('$')/2)<CR>
JooMing
fonte
gm parece mover o cursor para o meio da tela, mas se minha linha de texto for menor que o comprimento da tela, ela não me levará ao meio. Desculpe por não esclarecer.
Teggy
@eggy: Entendo. Modifiquei minha solução para remapear o gm para ir para o meio da linha de texto. Como você pode ver, ele combina soluções da Ephemient e Luc Hermitte.
JooMing
Como efêmero apontou, ainda há um problema com os tarbos rígidos, já que o cursor () os conta como um caractere cada. Além disso, também não funcionará com caracteres de vários bytes.
precisa
7

Aqui está uma solução que respeitará os hardtabs e os caracteres de vários bytes.

:exe 'normal '.(virtcol('$')/2).'|'
Luc Hermitte
fonte
1

Aqui está a melhor solução que eu encontrei. Saltar exatamente para o meio da linha não é muito prático. Você provavelmente ainda precisará mover o cursor algumas posições depois de passar para o meio. E se você pudesse pular para um personagem específico? Muitas pessoas apenas pesquisam o personagem e depois clicam em "próximo" até alcançá-lo. Isso é lento. O plugin Easy-motion oferece uma solução melhor.

Meu favorito é <leader><leader>so personagem para o qual você deseja pular. O Easy Motion substitui todas as correspondências por letras diferentes para você escolher. Veja o tutorial. É um plugin para mudar a vida ...

Sam Ruberti
fonte