Aller au milieu de la ligne dans vim


14

Je sais que 0 va au début de la ligne et $ va à la fin, mais y a-t-il quelque chose pour le milieu?

Réponses:


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

4
Cela serait assez utile s'il était mappé, par exemple:: nnoremap gm: appeler le curseur (0, len (getline ('.')) / 2) <cr>
Heptite

3
virtcol ('$') / 2 suffit.
Luc Hermitte

@ Luc Hermitte: Sympa, mais pas exactement le meilleur comportement lorsque des onglets durs sont impliqués.
éphémère

C'est pourquoi j'utilise virtcol au lieu de col. :). Mais en effet, nous devons utiliser | et non curseur (). BTW, len () ne donnera pas de meilleur résultat. De plus, len donnera d'autres problèmes avec les caractères multi-octets.
Luc Hermitte

8

Taper le gmferait, mais il se déplace par des lignes d'écran (voir :help gm). Afin de le faire fonctionner avec des lignes de texte, on peut remapper cette commande:

map gm :call cursor(0, virtcol('$')/2)<CR>

gm semble déplacer le curseur au milieu de l'écran, mais si ma ligne de texte est plus courte que la longueur de l'écran, cela ne m'amène pas au milieu. Désolé de ne pas avoir clarifié.
teggy

@teggy: Je vois. J'ai modifié ma solution pour remapper gm pour aller au milieu de la ligne de texte. Comme vous pouvez le constater, il combine les solutions de l'éphémient et de Luc Hermitte.
JooMing

Comme l'éphémient l'a souligné, il y a toujours un problème avec les tarbs durs car le curseur () les compte comme un caractère chacun. De plus, cela ne fonctionnera pas non plus avec des caractères multi-octets.
Luc Hermitte

7

Voici une solution qui respectera également les hardtabs et les caractères multi-octets.

:exe 'normal '.(virtcol('$')/2).'|'

1

Voici la meilleure solution que j'ai trouvée. Sauter exactement au milieu de la ligne n'est pas très pratique. Vous devrez probablement encore déplacer le curseur de quelques positions après vous être déplacé vers le milieu. Et si vous pouviez passer à un personnage spécifique? Beaucoup de gens recherchent simplement le personnage, puis cliquent sur «Suivant» jusqu'à ce qu'ils l'atteignent. C'est lent. Le plugin Easy-motion offre une meilleure solution.

Mon préféré est <leader><leader>salors le personnage sur lequel vous voulez sauter. Easy Motion remplace toutes les correspondances par des lettres différentes parmi lesquelles vous pouvez choisir. Voir le tutoriel. C'est un plugin qui change la vie ...

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.