140 votes

Quels sont les commandes/frappes les plus utilisées de vim ?

Je suis un programmeur Ruby essayant de passer de Textmate à MacVim, et j'ai du mal à naviguer à travers les listes gargantuesques des choses que l'on peut faire dans VIM et de toutes les touches associées. J'en ai assez d'entendre "Vous pouvez utiliser 'I' pour insérer du texte, ou 'a' pour ajouter du texte après le caractère, ou 'A' pour ajouter du texte à la fin de la ligne, ou..." Je n'arrive pas à imaginer que tout le monde utilise les 20 touches différentes pour naviguer dans le texte, une dizaine de touches pour commencer à ajouter du texte, et 18 façons de sélectionner visuellement un bloc interne. Ou est-ce le cas !?

Ma feuille de triche idéale serait les 30 à 40 touches ou commandes les plus utilisées que tout le monde utilise pour écrire du code au quotidien, ainsi que les plugins essentiels que les rubyistes utilisent quotidiennement et les 10 commandes les plus utilisées pour eux. En théorie, une fois que je l'aurai et que je deviendrai aussi compétent dans VIM que je le suis dans Textmate, alors je pourrai commencer à apprendre les milliers d'autres commandes VIM qui me rendront plus efficace.

Ou, est-ce que j'apprends VIM de la mauvaise manière ?

9 votes

Référence obligatoire à cafepress.com/geekcheat.11507711.

1 votes

Re-étiqueté pour supprimer "ruby" et ajouter "raccourcis clavier". Semble plus approprié.

0 votes

"Est-ce que j'apprends Vim de la mauvaise manière ?" - non, vous avez juste besoin de commencer par quelques bases, et rappelez-vous que vous allez encore apprendre plus de commandes dans un an. Peut-être qu'un jour vous utiliserez vraiment toutes les commandes ! Mais personne ne les utilise toutes dès le premier jour.

363voto

Greg Hewgill Points 356191

Voici une fiche de conseils que j'ai rédigée une fois, avec les commandes que j'utilise réellement régulièrement:

Références

Général

  • Presque toutes les commandes peuvent être précédées d'un nombre pour une répétition. par exemple. 5dd efface 5 lignes
  • vous permet de sortir de n'importe quel mode et de revenir au mode commande
  • Les commandes précédées de : sont exécutées en ligne de commande en bas de l'écran
  • :help aide avec n'importe quelle commande

Navigation

  • Mouvement du curseur: ←hjk l→
  • Par mots:
    • w mot suivant (par signes de ponctuation); W mot suivant (par espaces)
    • b mot précédent (par signes de ponctuation); B mot précédent (par espaces)
    • e fin du mot (par signes de ponctuation); E fin du mot (par espaces)
  • Par ligne:
    • 0 début de ligne; ^ premier non-espace
    • $ fin de ligne
  • Paragraphe paragraphe:
    • { ligne blanche précédente; } ligne blanche suivante
  • Par fichier:
    • gg début du fichier; G fin du fichier
    • 123G aller à un numéro de ligne spécifique
  • Par marqueur:
    • mx définir la marque x; 'x aller à la marque x
    • '. aller à la position de la dernière modification
    • ' ' revenir au dernier point avant de sauter
  • Défilement:
    • ^F une page vers le bas; ^B une page vers le haut
    • ^D moitié de page vers le bas; ^U moitié de page vers le haut
    • ^E défilement d'une ligne vers le haut; ^Y défilement d'une ligne vers le bas
    • zz centrer la ligne du curseur

Édition

  • u annuler; ^R refaire
  • . répéter la dernière commande de modification

Insertion

Toutes les commandes d'insertion sont terminées par pour revenir au mode commande.

  • i insérer du texte au curseur; I insérer du texte au début de la ligne
  • a ajouter du texte après le curseur; A ajouter du texte après la fin de la ligne
  • o ouvrir une nouvelle ligne en dessous; O ouvrir une nouvelle ligne au-dessus

Modification

  • r remplacer un seul caractère; R remplacer plusieurs caractères
  • s changer un seul caractère
  • cw changer le mot; C changer jusqu'à la fin de la ligne; cc changer toute la ligne
  • c change le texte dans la direction du mouvement
  • ci( changer à l'intérieur des parenthèses (voir sélection d'objet de texte pour plus d'exemples)

Suppression

  • x supprimer le caractère
  • dw supprimer le mot; D supprimer jusqu'à la fin de la ligne; dd supprimer toute la ligne
  • d supprime dans la direction du mouvement

Couper et coller

  • yy copier la ligne dans le tampon de collage; dd couper la ligne dans le tampon de collage
  • p coller le tampon en dessous de la ligne du curseur; P coller le tampon au-dessus de la ligne du curseur
  • xp échanger deux caractères (x pour supprimer un caractère, puis p pour le remettre après la position du curseur)

Blocs

  • v bloc visuel en continu; V bloc visuel ligne; ^V bloc visuel colonne
    • la plupart des commandes de mouvement étendent le bloc à la nouvelle position du curseur
    • o déplace le curseur à l'autre extrémité du bloc
  • d ou x couper le bloc dans le tampon de collage
  • y copier le bloc dans le tampon de collage
  • > indenter le bloc; < désindenter le bloc
  • gv résélectionner le dernier bloc visuel

Global

  • :%s/foo/bar/g substituer toutes les occurrences de "foo" par "bar"
    • % est un plage qui indique chaque ligne dans le fichier
    • /g est un drapeau qui modifie toutes les occurrences sur une ligne au lieu de seulement la première

Recherche

  • / rechercher vers l'avant; ? rechercher vers l'arrière
  • * rechercher vers l'avant le mot sous le curseur; # rechercher vers l'arrière le mot sous le curseur
  • n prochaine correspondance dans la même direction; N prochaine correspondance dans la direction opposée
  • fx avancer jusqu'au prochain caractère x; Fx reculer jusqu'au caractère précédent x
  • ; se déplacer de nouveau vers le même caractère dans la même direction; , se déplacer de nouveau vers le même caractère dans la direction opposée

Fichiers

  • :w enregistrer le fichier sur le disque
  • :w name enregistrer le fichier sur le disque en tant que name
  • ZZ enregistrer le fichier sur le disque et quitter
  • :n éditer un nouveau fichier; :n! éditer un nouveau fichier sans enregistrer les modifications actuelles
  • :q quitter l'édition d'un fichier; :q! quitter l'édition sans enregistrer les modifications
  • :e éditer à nouveau le même fichier (si modifié à l'extérieur de vim)
  • :e . explorateur de répertoire

Fenêtres

  • ^Wn nouvelle fenêtre
  • ^Wj descendre vers la fenêtre suivante; ^Wk monter vers la fenêtre précédente
  • ^W_ maximiser la fenêtre actuelle; ^W= égaliser toutes les fenêtres
  • ^W+ augmenter la taille de la fenêtre; ^W- réduire la taille de la fenêtre

Navigation dans le code source

  • % sauter vers la parenthèse/crochet/accolade correspondant, ou le bloc de langage si le module de langage est chargé
  • gd aller à la définition du symbole local sous le curseur; ^O revenir à la position précédente
  • ^] sauter à la définition du symbole global (nécessite le fichier tags); ^T revenir à la position précédente (pile arbitraire de positions maintenue)
  • ^N (en mode insertion) complétion automatique des mots

Afficher les modifications locales

Vim dispose de certaines fonctionnalités qui facilitent la mise en évidence des lignes modifiées par rapport à une version de base dans le contrôle de source. J'ai créé un petit script vim qui facilite cela: http://github.com/ghewgill/vim-scmdiff

1 votes

+1 Relativement minimal, bien que je dois admettre que je ne me trouve pas en train d'utiliser des commandes de fenêtre ou de naviguer avec autre chose que les touches fléchées / page haut / page bas / début / fin, et gg / G. Oh, et pour la navigation par numéro de ligne, vous pouvez aussi utiliser :123 (mode commande).

3 votes

Jolie feuille de triche. J'ajouterais ^w^w pour faire défiler les fenêtres, :x au lieu de ZZ pour la cohérence, tx en avant du caractère et Tx en arrière.

0 votes

Je dois noter que cela n'est que le basique de ce que j'utilise. J'ai créé cette liste comme un outil pour enseigner vim à d'autres personnes. J'utilise beaucoup d'autres commandes moins fréquemment, et j'ai également divers alias et macros configurés pour m'aider à utiliser vim de manière plus efficace.

24voto

RDL Points 3589

Voici une excellente feuille de triche pour vim :

entrer la description de l'image ici

23voto

Justin Thomas Points 3292

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

C'est la meilleure chose pour apprendre VIM.

0 votes

Je n'ai jamais vu ça auparavant, une référence très cool pour une fois que vous savez ce que font les commandes.

3 votes

La partie "graphique" est inutile si vous n'avez pas de clavier qwerty, cependant.

5 votes

Il me surprend que poster un lien (qui a déjà été posté maintes fois d'ailleurs) attire autant d'attention alors que les efforts supplémentaires des autres participants ne sont pas remarqués...

4voto

the Tin Man Points 69148

Avez-vous suivi le tutoriel intégré de Vim ? Si ce n'est pas le cas, rendez-vous dans la ligne de commande et tapez vimtutor. C'est un excellent moyen d'apprendre les commandes initiales.

Vim offre une quantité incroyable de flexibilité et de puissance et, si vous êtes comme la plupart des utilisateurs de vim, vous apprendrez beaucoup de nouvelles commandes et en oublierez d'anciennes, pour ensuite les réapprendre. L'aide intégrée est bonne et mérite une consultation périodique pour apprendre de nouvelles choses.

Il existe plusieurs bonnes FAQ et trucs et astuces pour vim sur internet. Je recommanderais de rechercher vim + faq et vim + cheatsheet. Cheat-Sheets.org#vim est une bonne source, tout comme Vim Tips wiki.

0 votes

Je viens de découvrir ça, et heureusement c'est déjà installé sur un Mac. Je l'essaie maintenant (à 1h du matin...)

0 votes

J'utilise vim depuis longtemps et c'est l'une des premières choses que j'installe sur une machine. MacVim, sur Mac OS, est très agréable. J'ai tendance à compiler vim à partir de la source sur la plupart des boîtes Linux que j'utilise, simplement parce que la plupart des distributions ne sont pas à jour ou n'ont pas défini correctement le support de langage. Je garde une version à jour de mon fichier ~/.vimrc, ~/.gvimrc et du répertoire ~/.vim dans une archive tar pour quand je dois configurer quelque chose. Copier cela et extraire les fichiers me permet d'avoir vim en exécution avec toutes mes commandes habituelles et mes thèmes de couleur en quelques minutes sur Windows, Mac et Linux.

3voto

Karl Bielefeldt Points 15469

Ce que font la plupart des gens, c'est commencer par les bases essentielles, comme peut-être i, yw, yy, et p. Vous pouvez continuer à utiliser les touches fléchées pour vous déplacer, sélectionner du texte avec la souris, utiliser les menus, etc. Ensuite, lorsque quelque chose ralentit votre rythme, vous cherchez la manière plus rapide de le faire, et ajoutez progressivement de plus en plus de commandes. Vous pourriez apprendre une nouvelle commande par jour pendant un moment, puis cela se limitera à une par semaine. Vous vous sentirez assez productif en un mois. Après un an, vous aurez un répertoire assez solide, et après 2-3 ans, vous n'aurez même plus conscience de ce que vos doigts tapent, et cela semblera bizarre si vous deviez l'épeler pour quelqu'un. J'ai appris vi en 1993 et j'apprends toujours 2 ou 3 nouvelles commandes par an.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X