Quelles sont les commandes vim/touches les plus utilisées?

je suis un Ruby programmant essayant de passer de Textmate à MacVim, et j'ai du mal à parcourir les listes gargantuaises de choses que vous pouvez faire dans VIM et toutes les touches pour eux. Je suis fatigué 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 ne peux pas imaginer que tout le monde utilise les 20 différentes touches pour naviguer texte, 10 touches ou plus pour commencer à ajouter du texte, et 18 façons de visuellement sélectionnez un bloc interne. Ou pensez-vous!?

ma feuille de tricherie idéale serait les 30-40 touches les plus utilisées ou les commandes que tout le monde utilise pour écrire du code sur une base quotidienne, avec les plugins absolument essentiels que les rubyists utilisent quotidiennement et les 10 commandes les plus utilisées pour eux. En théorie, une fois que j'ai cela et que je commence à être aussi compétent en VIM qu'en Textmate, puis je peux commencer à apprendre les milliers d'autres commandes VIM qui me feront plus efficace.

ou, est-ce que J'apprends VIM de la mauvaise façon?

85
demandé sur darvids0n 2011-03-23 07:11:32

10 réponses

Voici une feuille que j'ai écrite une fois, avec les commandes que j'utilise régulièrement:

Références

général

  • presque toutes les commandes peuvent être précédées d'un nombre pour un comptage répété. par exemple. 5dd Supprimer 5 lignes
  • <Esc> vous permet de sortir de n'importe quel mode et de revenir en mode commande
  • les commandes précédées de : sont exécutées sur la ligne de commande en bas de l'écran
  • : aide aide avec n'importe quelle commande

Navigation

  • déplacement du curseur: ← h j k l→
  • par mots:
    • w mot suivant (par ponctuation); W mot suivant (par Espaces)
    • b back word (par des signes de ponctuation); B back word (par des espaces)
    • e mot de fin (par ponctuation); E mot de fin (par Espaces)
  • par line:
    • 0 début de ligne; ^ premier non-blanc
    • $ fin de ligne
  • par paragraphe:
    • { ligne blanche précédente; } ligne blanche suivante
  • par file:
    • gg début du fichier; G fin du fichier
    • 123G passer au numéro de ligne spécifique
  • par marqueur:
    • mx jeu de marque x ; 'x va à la marque x
    • " aller à la position de la dernière édition
    • '' revenir au dernier point avant de sauter
  • Scrolling:
    • ^F avant plein écran; ^B vers l'arrière plein écran
    • ^d demi-écran vers le bas; ^U demi-écran vers le haut
    • ^e faites défiler une ligne vers le haut; ^y faites défiler une ligne vers le bas
    • zz centre curseur de ligne

édition

  • u annuler; ^R refaire
  • . répétition de la dernière commande d'édition

insérant

toutes les commandes d'insertion se terminent par <Esc> pour revenir en mode commande.

  • je insérer du texte au curseur; je insérer texte au début de la ligne
  • a Ajouter texte après curseur; a Ajouter texte après fin de ligne
  • o ouvrir de nouvelles de la ligne ci-dessous; O ouvrir de nouvelles de la ligne au-dessus de

Changer

toutes les commandes de changement sauf r et R se terminent par <Esc> pour revenir en mode commande.

  • R remplacer un caractère; R remplacer plusieurs caractères
  • s changement de caractère unique
  • cw changer de mot; C changer à la fin de la ligne; cc changer toute la ligne
  • c <motion> modifications de texte dans le sens de la motion
  • ci( le changement à l'intérieur des parenthèses (voir sélection de l'objet texte pour plus d'exemples)

Supprimer

  • x supprimer char
  • dw supprimer le mot; D supprimer à la fin de la ligne; dd supprimer toute la ligne
  • d <motion> supprime dans le sens de la motion

couper-coller

  • yy copier la ligne dans la mémoire tampon de collage; dd de la ligne de coupe en pâte de tampon
  • p tampon de pâte sous le curseur ligne; P coller le tampon au-dessus du curseur de ligne
  • 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 visuelle flux; V bloc visuelle de la ligne; ^V visual bloc de 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 en mémoire tampon de collage
  • y copie de bloc dans la mémoire tampon de collage
  • > tiret block; < unindent bloc
  • gv resélectionner le dernier bloc visuelle

Global

  • :%s/foo/bar / g remplacer toutes les occurrences de "foo" à " bar"
    • % est un gamme qui indique à chaque ligne dans le fichier
    • / g est un drapeau qui change tous les événements sur une ligne au lieu de seulement le premier

Recherche

  • / ? "1519330920 de recherche" amont
  • * rechercher un mot sous le curseur; # rechercher un mot sous le curseur
  • n prochain match dans la même direction; N match suivant en sens inverse
  • fx de caractère x ; Fx vers l'arrière pour le caractère précédent x
  • ; déplacer à nouveau au même caractère dans la même direction; , déplacer à nouveau au même caractère dans la direction opposée

Fichiers

  • :w écrire le fichier sur le disque
  • :w name écrire le fichier sur le disque comme name
  • ZZ écrire le fichier sur le disque et quitter
  • :n éditer un nouveau fichier; :n! éditer un nouveau fichier sans enregistrer les modifications en cours
  • : q quittez l'édition d'un fichier; : q! quitter l'édition sans enregistrer les modifications
  • : e éditer à nouveau le même fichier (si changé en dehors de vim)
  • : E. répertoire de l'explorateur

Windows

  • ^Wn nouvelle fenêtre
  • ^Wj à côté de la fenêtre; ^Wk jusqu'à la fenêtre précédente
  • ^W_ maximiser la fenêtre en cours; ^W= faire de toutes les fenêtres de taille égale
  • ^W+ augmenter la taille de la fenêtre; ^w - diminuer la taille de la fenêtre

Source Navigation

  • % passer à la parenthèse/bracket/Accolade correspondante, ou au bloc de langue si le module de langue est chargé
  • gd aller à la définition de symbole local Sous curseur; ^o retourner à la position précédente
  • ^] aller à la définition de symbole global (nécessite tags fichier); ^t retour à la position précédente (arbitraire de la pile de positions maintenues)
  • ^n (en mode insertion) automatic word completion

afficher les changements locaux

Vim a quelques fonctionnalités qui rendent facile de mettre en évidence les lignes qui ont été modifiées d'une version de base dans le contrôle source. J'ai créé un petit script vim qui rend cela facile: http://github.com/ghewgill/vim-scmdiff

236
répondu Greg Hewgill 2017-02-04 19:48:06

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

C'est la meilleure chose qui soit pour apprendre le VIM.

19
répondu Justin Thomas 2011-03-23 04:14:35

Ici est un grand feuille de triche pour vim :

enter image description here

8
répondu RDL 2011-03-23 05:32:44

ce que la plupart des gens font est de commencer avec les basiques, comme peut-être i , yw , yy , et p . Vous pouvez continuer à utiliser les touches fléchées pour se déplacer, sélectionner le texte avec la souris, en utilisant les menus, etc. Puis quand quelque chose vous ralentit, vous regardez vers le haut la manière plus rapide de le faire, et graduellement ajouter de plus en plus de commandes. Vous pourriez apprendre un nouveau commandement par jour pendant un certain temps, puis il sera filet à un par semaine. Vous vous sentirez plutôt productif dans un mois. Après un an, vous aurez un répertoire assez solide, et après 2-3 ans, vous ne penserez même pas consciemment ce que vos doigts tapent, et il aura l'air bizarre si vous devez l'épeler pour quelqu'un. J'ai appris le vi en 1993 et j'ai encore deux ou trois nouveaux commandements par année.

3
répondu Karl Bielefeldt 2011-03-23 04:33:02

avez-vous suivi le tutoriel intégré de Vim? Sinon, passez à la ligne de commande et tapez vimtutor . C'est une excellente façon d'apprendre l'initiale de commandes.

Vim a une incroyable flexibilité et puissance et, si vous êtes comme la plupart des utilisateurs de vim, vous apprendrez beaucoup de nouvelles commandes et oublierez les anciennes, puis les réapprendre. L'aide intégrée est bonne et digne de la navigation périodique pour apprendre de nouvelles choses.

Il ya plusieurs bonnes FAQ ET cheatsheets for vim sur internet. Je recommande de chercher vim + faq et vim + cheatsheet . Cheat-Feuilles.org#vim est une bonne source, est Vim Conseils wiki .

3
répondu the Tin Man 2011-03-23 05:27:59

le cheatsheet de @Greg Hewgill est très bon. J'ai commencé à changer de TextMate il y a quelques mois. Maintenant je suis aussi productif que je l'étais avec TM et constamment surpris par le pouvoir de Vim.

Voici comment j'ai changé . Peut-être il peut être utile pour vous.

Grosso modo, Je ne pense pas que ce soit une bonne idée de faire un changement radical. Vim est très différent et il est préférable d'aller progressivement.

et de répondre à votre Sous-question, oui, j'utilise tous les iaIAoO tous les jours pour entrer en mode insertion. Ça semble bizarre au début, mais on n'y pense pas vraiment après un moment.

quelques commandes incroyablement utiles pour toutes les tâches liées à la programmation:

  • r et R pour remplacer les caractères
  • <C-a> et <C-x> l'augmentation et la diminution des nombres
  • cit pour changer le contenu D'une balise HTML, et ses variantes ( cat , dit , dat , ci( , etc.)
  • <C-x><C-o> (associées à des ,, ) pour omnicompletion
  • sélection visuelle des blocs avec <C-v>
  • et ainsi de suite ...

une fois que vous êtes habitué à la façon Vim il devient vraiment difficile de ne pas frapper o ou x tout le temps quand l'édition de texte dans certains autre éditeur ou textfield.

3
répondu romainl 2017-05-23 11:55:10

Je ne peux pas imaginer que tout le monde utilise les 20 touches différentes pour naviguer dans le texte, 10 touches pour commencer à ajouter du texte, et 18 façons de sélectionner visuellement un bloc intérieur. Ou pensez-vous!?

je le fais.

en théorie, une fois que j'ai cela et que je commence à être aussi compétent en VIM que je le suis dans Textmate, alors je peux commencer à apprendre les milliers d'autres commandes VIM qui me rendront plus efficace.

C'est la bonne façon de le faire. Commencez par des commandes de base, puis reprenez celles qui améliorent votre productivité. J'aime suivre ce blog pour des conseils sur la façon d'améliorer ma productivité avec vim.

2
répondu Jeff 2011-03-23 04:22:36

tuxfiles.org tient une assez bonne feuille de tricherie. Je pense qu'il y a quelques points à apprendre les commandes:

  • lisez la feuille régulièrement. Ne vous souciez pas de les utiliser toutes, ou de vous souvenir de toutes les clés, sachez juste que la commande existe. Cherchez la commande et utilisez-la lorsque vous faites quelque chose de répétitif.
  • si vous faites quelque chose régulièrement (comme supprimer une ligne entière après un caractère particulier d$ ), aller une recherche rapide de google pour voir si vous pouvez trouver une commande pour elle.
  • notez les commandes que vous pensez trouver utiles et gardez cette liste où vous pouvez la voir pendant que vous écrivez votre code. Je plaiderais contre l'impression de quelque chose et à la place vous encourager à utiliser post it notes pour quelques commandes à la fois.
  • si possible, regarder d'autres programmeurs utiliser vim, et leur demander quelles sont les commandes qu'ils utilisent comme vous les voyez faire quelque chose d'intéressant.

en plus de ces conseils, il y a quelques concepts de base que vous devriez comprendre.

  • vim utilisera le même caractère pour représenter la même fonction. Par exemple, pour supprimer une ligne après l'utilisation du caractère d$ . Pour mettre en évidence une ligne après un caractère particulier, utilisez v$ . Donc notez que $ indique que vous allez faire quelque chose à la fin de la ligne de l'endroit où votre curseur est actuellement.
  • u est annuler, et ctrl+r est à refaire.
  • mettre un nombre devant une commande l'exécutera à plusieurs reprises. 3dd supprimera la ligne sur laquelle se trouve votre curseur et les deux lignes qui suivent, de même 3yy copiera la ligne sur laquelle se trouve votre curseur et les deux lignes qui suivent.
  • comprendre comment naviguer à travers les tampons utilisation :ls pour énumérer les tampons, et :bn , :bp pour les parcourir en vélo.
  • lire le tutoriel trouvé dans :help C'est probablement la meilleure façon "d'apprendre les ficelles", et le reste des commandes, vous apprendrez grâce à l'utilisation.
2
répondu amccormack 2011-03-23 04:25:42

mettez ça dans votre .bashrc pour ouvrir vim avec le dernier fichier modifié à la dernière édition en ligne de

alias vil="vim  +\"'\"0"
2
répondu modesto 2014-04-30 21:00:01

allez à édition efficace avec vim et apprenez ce dont vous avez besoin pour commencer. Tout sur cette page n'est pas essentiel de commencer, alors choisissez ce que vous voulez.

de là, utilisez vim pour tout. "hjkl", "o" et "p", vous obtiendrez un long chemin, même si ce n'est pas la manière la plus efficace. Lorsque vous vous heurtez à une tâche pour laquelle vous ne connaissez pas la clé magique pour le faire efficacement (ou du tout), et vous vous trouvez à le faire plus qu'un quelques fois, allez le chercher. Peu à peu, il deviendra une seconde nature.

j'ai trouvé vim intimidant il y a de nombreuses lunes (quand il n'avait pas le "m" à la fin), mais il n'a fallu qu'une semaine d'utilisation régulière pour devenir efficace. Je trouve que c'est l'éditeur le plus rapide pour faire des trucs.

1
répondu mikestew 2014-02-26 20:47:45