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?

Respostas:


11
:call cursor(0, len(getline('.'))/2)

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>

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).'|'

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 ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.