web-dev-qa-db-fra.com

VIM Navigation ultra rapide

La seule chose qui me manque dans l'utilisation d'autres éditeurs est de trouver ma place avec la souris. Je peux regarder avec mes yeux une zone spécifique sur le fichier et avec un mouvement de la souris et un clic je suis là. Avec VIM je dois jjjjjkkkkkkjjjjhhhh ... presque là hhhhh oh merde j'ai raté de 3 caractères, lll.

J'apprends à faire des marques et j'ai trouvé un plugin de signets qui est génial, je peux créer des marqueurs et les détruire avec <f3> et accédez à eux avec malheureusement les marques sont oubliées lorsque le fichier est fermé.

Comment allez-vous tous super naviguer dans les fichiers? Je sais que je pourrais aussi faire 5j7k4j5h et ainsi de suite, mais il doit y avoir un plugin qui peut lire mes yeux et placer le curseur là où j'en ai vraiment besoin ..

J'ai également appris à utiliser /% pour rechercher un terme spécifique. Cela aide, mais tous les caractères correspondants sont mis en évidence dans le document.

82
Helmut Granda

Essayez $ vimtutor, il vous apprendra tout ce que vous devez savoir pour commencer.

hjkl sont la pointe du sommet de l'iceberg et très rarement utilisés, du moins dans mon cas.

wWEe et BbgegE permettent tous de déplacer Word par Word:

  • w et e vont de l'avant, W et E tiennent compte des espaces et de la ponctuation

    " here the * marks the default location of the cursor
    " and each letter shows where you jump when you hit the key.
    
    Latin: Lorem ipsum dolor sit amet.
                       *   e   e    e
                       *   E   E     E
    *    w w     w     w     w   w   w
    *      W     W     W     W   W   W
    
  • b et ge reculent, B et gE tiennent compte des espaces et de la ponctuation

    Latin: Lorem ipsum dolor sit amet.
    b    b b     b     *
    B      B     B     *
         ge    ge    ge*
        ge
         gE    gE    gE*
    

fFtT sont utilisés pour atteindre un caractère particulier sur la ligne actuelle et ;, sont utilisés pour répéter ce mouvement, dans le même sens pour ;et dans la direction opposée pour ,:

  • fm saute sur le prochain m en avant, F recule

    Latin: Lorem ipsum dolor sit amet.
    *          fm    ;            ;
               ;     Fm          *
    
  • tm saute AVANT la prochaine m en avant, T recule

    Latin: Lorem ipsum dolor sit amet.
    *         tm    ;            ;
              ;     Tm           *
    

/? permet de passer à la première occurrence d'un motif à partir de la position actuelle du curseur:

  • /pattern va de l'avant

    Latin: Lorem ipsum dolor sit amet.
    *            /ips
    
  • ?pattern recule

    Latin: Lorem ipsum dolor sit amet.
    ?Lat             *
    

0$ permet de passer au premier et au dernier caractère de la ligne.

    (whitespace)Latin: Lorem ipsum dolor sit amet.(whitespace)
    0                  *                                     $

^g_ permet de passer au premier et au dernier caractère imprimable de la ligne.

    (whitespace)Latin: Lorem ipsum dolor sit amet.(whitespace)
                ^      *                         g_

Simple et combiné ()[]{} sont utilisés pour déplacer phrase par phrase ou paragraphe par paragraphe ou bloc de code par bloc de code.

<C-b> et <C-f> sont utilisés pour faire défiler l'écran vers l'arrière et vers l'avant.

<C-u> et <C-d> sont utilisés pour faire défiler le demi-écran vers l'arrière et vers l'avant.

H, M et L déplacent le curseur respectivement vers le haut, le milieu et le bas de la fenêtre.

zt, zz et zb déplace la ligne sous le curseur vers le haut, le milieu, le bas de la fenêtre, respectivement.

Etc.

:help motion.txt va vous épater.

150
romainl

en plus de la commande motion de vim, je trouve qu'un plugin vim nommé EasyMotion est assez utile pour naviguer, si vous êtes familier avec vimperator ou pentadactyl, EasyMotion vient de ramener le mode indice à vim. ici est une démo animée et ici est le tutoriel vidéo. J'espère que cela vous sera utile.

23
Vincent

Il y a des millions de façons de se déplacer à Vim, c'est l'un de ses points forts. j'utilise { et } beaucoup, qui montent et descendent jusqu'à la prochaine ligne vierge dans cette direction. % est utile pour aller et venir vers un support correspondant (de tout type). W et B avancer et reculer par un "mot".

Il pourrait être utile de revoir la section Se déplacer du manuel de Vim.

18
Greg Hewgill

vim prend en charge la souris! essayez ceci (dans votre .vimrc):

set mouse=a

sidenote: en tant qu'utilisateur d'écran, j'ai trouvé que j'avais également besoin

set ttymouse=xterm2

pour que cela fonctionne.

10
rgcb

personnellement je préfère utiliser:

"/<chars><enter>" to quickly move to somewhere   ( extremely fast! trust me! )
":<number>" to go to some line, 
"ctrl + f/b" to forward/back
"g;" to move to the last editing place.
"w/b" to move by Word
"jklh" to move your cursor to the exact position
8
Siwei Shen 申思维

Avec l'option relativenumber ( : help relativenumber - inclus avec Vim 7. ) vous pouvez accéder à la ligne sous vos yeux avec le a [count]k ou [count]j mouvement, qui vous permet de vous déplacer dans la ligne courante avec des mouvements comme ftweb comme expliqué par @romainl.

5
mMontu

Excepté {, }, (, ), <number>cb, <number>cB, <number>cW et %, J'utilise de telles techniques de navigation:

  • ciw, diw (ciW, diW). etc. pour éditer/supprimer rapidement Word sous le curseur (y compris les caractères sans espace)
  • ci(, ci" (ca(, ca"), etc. pour modifier rapidement entre parenthèses, guillemets (y compris les parenthèses, guillemets). Il en va de même pour d.
  • Marques avec des lettres MAJUSCULES pour les définir globalement (entre les fichiers) et de manière persistante (lorsque le tampon est fermé). Par exemple, mA créera une marque globale A qui sera disponible avec 'A commande (ou `A pour respecter la colonne).
  • gf pour aller rapidement au fichier sous le curseur
  • f, t (F, T) pour passer au caractère, avant le caractère à droite (gauche) (utilisez ; répéter). Celles-ci sont particulièrement utiles pour les commandes d et c (utilisez . répéter).
  • ^] pour passer à la balise et ^T pour reculer.

Et plein d'autres façons de bouger :)

Consultez ceci pour plus d'informations: http://www.thegeekstuff.com/2009/03/8-essential-vim-editor-navigation-fundamentals/

P.S. Pour les utilisateurs de Rails il existe un plugin Rails-vim très utile, vous pouvez également le consulter).

5
penkovsky

this est un bon endroit pour apprendre les principales commandes de navigation, une partie de la puissance/vitesse de vim provient de la combinaison du mouvement et de l'action, c'est-à-dire cw -> changer le mot, d10j -> supprimer 10 lignes vers le bas, etc. this et this sont également des lectures intéressantes.

3
T I

Vous pouvez :set nohlsearch pour désactiver la surbrillance de vos caractères de recherche.

Je navigue aussi beaucoup avec ctags.

2
richo

J'ai écrit un plugin avec une navigation ultra rapide à l'esprit, il est appelé sans déplacement:

https://github.com/anschnapp/move-less

Il vous permet de rechercher facilement le fichier de trous en faisant défiler avec (hjkl- touches). Vous ne changez pas la position de votre curseur lors du défilement du site du trou (basé sur le pliage). Si vous abandonnez votre recherche, vous venez de commencer.

Pour une navigation ultra rapide, l'intension est d'utiliser mon plugin pour obtenir la position cible à l'écran, puis de passer à la bonne position via easymotion (ce qui était déjà recommandé dans une autre réponse):

https://github.com/easymotion/vim-easymotion

Si vous combinez les deux, vous pouvez même prendre de l'avance sur l'historique des sauts et vous pouvez basculer entre votre origine et votre destination cible simplement via <c-o> et <c-i>.

0
snap