Question vim passe au premier non-blanc dans la même colonne


Dans vim, comment puis-je déplacer le curseur vers le haut ou le bas sur la première ligne? contenant un caractère non vide dans la même colonne?

Par exemple, dans le texte suivant:

item1
    item2
    item3
item4
    item5
    item6

Si le curseur est sur le e dans item1, déplacez le curseur sur le e dans item4.

Si sur le m dans item3, passez à la m dans item5.

Pour votre information, je recherche un moyen rapide et efficace de naviguer dans le texte formaté.

(P.S. Ce sont des espaces, pas des onglets.)


3
2018-05-16 12:29


origine




Réponses:


Vous pouvez utiliser les mappages suivants pour ce faire. (Il y a peut-être des cas extrêmes auxquels je n'ai pas pensé)

nnoremap <leader>d m':exec '/\%' . col(".") . 'c\S'<CR>``n
nnoremap <leader>u m':exec '?\%' . col(".") . 'c\S'<CR>``n

La partie importante est :exec '/\%' . col(".") . 'c' Cela correspond à la colonne en cours. Ceci est pris directement de :h %c. Puis j'ai ajouté un \S pour correspondre à des espaces non blancs. m' et `` est utilisé pour stocker la position actuelle et la restaurer autour de l'instruction execute. Cela est nécessaire, car l'utilisation de la commande execute nous place au début de la ligne, ce qui peut entraîner un comportement erratique (saut de lignes dans certains cas). Après avoir exécuté ceci je vais au premier match avec n. La seule différence entre la version haute et basse est la direction dans laquelle nous recherchons / pour le bas et ? pour monter

Si vous préférez faire cela avec des colonnes virtuelles (c.-à-d. Des onglets) \%c avec \%v.


1
2018-05-16 17:17



C'est superbe; c'est exactement ce que je cherchais! Je pense que je vais les cartographier <leader>j et <leader>k respectivement. La seule chose que je vais ajouter est :noh à la fin de chaque pour effacer les points saillants. Je note également que cela nuirait à toute recherche antérieure ou à certains faits saillants, mais cela fait essentiellement ce que je voulais. Merci ! - Lqueryvg
@Lqueryvg alors que le registre de recherche est toujours utilisé n et N pour monter et descendre la colonne. - FDinoff
Encore mieux ! Merci encore!! - Lqueryvg


ma Plugin JumpToVerticalOccurrence fournit ]| et [| cartographies qui fournissent juste cela, en soutenant [count] et sans frapper le modèle de recherche actuel.


1
2018-05-16 19:06



Merci pour cela. Je vais explorer le plugin ainsi que la solution "one-liner". - Lqueryvg