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?

teggy
la source

Réponses:

11
:call cursor(0, len(getline('.'))/2)
éphémère
la source
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>
JooMing
la source
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).'|'
Luc Hermitte
la source
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 ...

Sam Ruberti
la source