Se déplacer (efficacement) verticalement dans Vim

27

Lorsque je veux atteindre une certaine partie d'un mot dans Vim (horizontalement), j'appuie simplement sur w, b, f ou t (quelque chose). Existe-t-il un bon moyen de le faire verticalement? Par exemple, je veux arriver à un certain mot ou à une lettre d'une ligne qui est en dessous ou au-dessus de la ligne dans laquelle je suis actuellement.

PS: sans utiliser: (numéro de ligne)

janoChen
la source

Réponses:

29

H, MEt Lse déplace le curseur vers le haut, au milieu et en bas de l'écran, respectivement. Par la suite, vous pouvez frapper zzpour centrer l'écran sur la ligne sur laquelle se trouve votre curseur.

Alison R.
la source
5
Et zb et zt déplacent l'écran en bas et en haut respectivement
Jani Hartikainen
11
  • vous pouvez utiliser la flèche haut / bas pour déplacer une ligne
  • vous pouvez taper un nombre, puis utiliser la flèche haut / bas pour monter / descendre autant de lignes
  • petits gsauts à la première ligne du document
  • le capital Gpasse à la dernière ligne du document
  • etc.

il existe des millions d'autres façons différentes, vim est très flexible à cet égard. Je recommanderais d'obtenir d'abord une feuille de triche vim pour les commandes de base, puis comme vous en avez le temps, parcourez la documentation vim à ce sujet.

Lien vers une feuille de triche: feuille de triche

Également:

  • /+ chaîne + (Enter)recherche la prochaine occurrence de chaîne du curseur vers l'avant jusqu'à la fin du document
  • ? - fait de même mais du curseur vers l'arrière vers le début du document

la source
6

Je saute en cherchant des chaînes uniques où je veux aller. Dans Vim, vous pouvez le faire avec:

/ chaîne de recherche

Je fais habituellement défiler vers l'avant et vers l'arrière en utilisant n et N une fois que j'ai entré une recherche.

Je fais également défiler en utilisant Ctrl-F et Ctrl-B pour parcourir rapidement le code. Mais j'utilise l'astuce de recherche le plus souvent. Parfois, vous pouvez vous perdre en parcourant les résultats de recherche avec n et N. Une bonne commande pour vous orienter est Ctrl-G, qui affiche quelque chose comme ceci au bas de l'écran Vim:

"script.pl" ligne 219 de 328 --66% - col 19-23

James Thompson
la source
+1 pour <CTRL> -F et <CTRL> -B, bien que j'ai tendance à "tricher" et à utiliser <PgUp> et <PgDown> presque aussi souvent!
Technomalogical
4

essayez:: il motion.txt et: il up-down-mouvements

Il a toute la liste des motions possibles de haut en bas

Michael
la source
3

Vous pouvez également effectuer des sauts vers une ligne spécifique du document en émettant NggNest le numéro de ligne que vous souhaitez sauter.

mloskot
la source
1
tu veux dire NG...
Peter
1
J'utilise Nggaussi (les deux variantes fonctionnent)
soulmerge
1
Ainsi que:N
viraptor
3

Vous devriez essayer le plugin easymotion de Lokaltog : http://www.vim.org/scripts/script.php?script_id=3526

Plugin Easymotion au travail

f3lix
la source
easymotion est vraiment bien mais je ne sais pas pourquoi le faire fonctionner pour la partie au dessus du curseur. Il met uniquement en surbrillance celui situé sous le curseur.
nXqd
2

comme mentionné précédemment H, M, L (comme en haut, moyen, bas) minuscules hjkl sont les commandes de jeu de console typiques pour gauche, bas, haut, droite et fonctionnent de la même manière dans vi (j, k fonctionnent dans gmail si vous activez raccourcis clavier)


la source
1

<Ctrl>+D - vers le bas

<Ctrl>+U - haut

sml
la source
C'est un demi-rouleau de page. Pour le défilement pleine page, utilisez <c-f>et<c-b>
Al.G.
1

En plus des mouvements verticaux réguliers, j'utilise une version modifiée de /programming/4946421/vim-moving-with-hjkl-in-long-lines-screen-lines . Je me déplace généralement avec les touches fléchées, pas avec hjkl (longtemps utilisateur d'autres éditeurs avant de trouver Vim, trop habitué aux flèches / Accueil / fin / PgUp / PgDn pour basculer, même après plus de 5 ans d'utilisation exclusive de Vim).

function! ScreenMovement(movement)
   if &wrap
      return "g" . a:movement
   else
      return a:movement
   endif
endfunction
map <expr> <C-Down> ScreenMovement("j")
map <expr> <C-Up> ScreenMovement("k")
map <expr> <C-Home> ScreenMovement("0")
map <expr> <C-End> ScreenMovement("$")

En maintenant la touche Ctrl enfoncée, je peux aller visuellement au début / à la fin ou à la montée / descente des lignes d'affichage. Pour moi, c'est plus efficace que les alternatives, du moins.

Presque oublié: j'avais besoin de modifier .Xdefaults pour qu'il fonctionne spécifiquement dans urxvt, mais c'est probablement un problème hors sujet (avec des réponses sur Google).

Daniel Andersson
la source