Comment fermer vim depuis la ligne de commande?

46

Je sais que c’est plus une question linux générale mais w / e. Ainsi, lorsque j'entre dans un programme tel que vim dans l'invite de commande, il affiche tout le texte du fichier et je peux le modifier, etc. Mais je ne vois pas comment fermer ou enregistrer le fichier et revenir à l'invite de commande sans tuer. le processus. Toute aide est appréciée.

Allons déjeuner
la source

Réponses:

72

Dans vim, il existe 3 modes différents:

  • Insérer - permet de taper et de modifier normalement
  • Visuel - utilisé pour sélectionner copier / coller, etc.
  • Normal - utilisé pour les commandes

Pour revenir au mode normal, vous pouvez toujours appuyer sur esc.

Une fois que vous êtes en mode normal, appuyez sur :pour commencer votre commande (elle apparaît en bas à gauche). Les commandes suivantes sont liées à la fermeture de vim:

  • :q - quitter si aucune modification n'a été apportée
  • :q! - quitter et détruire les modifications apportées
  • :wq - écrire les modifications (enregistrer) et quitter
  • :x- similaire à :wq, n'écrivez le fichier que si des modifications ont été apportées, puis quittez
jondavidjohn
la source
4
et :xest un raccourci pour:wq
Ward Muylaert le
2
Vous venez d' oublier le mode "normal". sensationnel. En fait, la mode()fonction dans vim peut renvoyer 18 valeurs distinctes.
Benoit le
Comme Benoit l'a mentionné, cette réponse utilise de façon confuse le terme "mode de commande" pour faire référence à ce que la documentation de vim appelle "mode normal". Vim docs considère que le mode de commande est ce que vous entrez en appuyant sur :en mode normal. Si vous frappez esc, vous revenez en mode normal. -1 pour avoir induit en erreur les personnes essayant d'apprendre la terminologie standard (et donc en mesure de donner un sens au système d'aide).
Intuition le
6
@intuited Tout le monde peut suggérer des modifications, ce qui sera probablement plus utile à long terme qu'un vote négatif et un bon conseil qui sera enfoui dans les commentaires.
Michael Martin-Smucker
Merci pour l'information, il devrait également être affiché quelque part dans VIM afin que l'on puisse savoir ... c'est tellement ridicule de chercher sur Internet.
Shridutt Kothari
14

Tout d'abord, appuyez sur la escapetouche. 1

Ensuite, il suffit de taper ZZ(ce sont deux Z majuscules d'affilée).
Ou tapez :x. L'un ou l'autre enregistrera toutes les modifications et partira.
Vous pouvez aussi utiliser:wq

Alternativement, vous pouvez taper :q (c'est-à-dire " quit, s'il vous plaît ") Cela ne se fermera que si vous n'avez pas apporté de modifications.

Si vous avez apporté des modifications et que vous souhaitez les supprimer et les quitter, tapez :q!(alias " quittez, putain !")

1 : Cela garantit que vous êtes en mode "commande". Ce que vous voulez pour les commandes de frappe, comme celles nécessaires pour quitter.

Belacqua
la source
4

À notre grand inconvénient, il n’existe pas de méthode générale pour quitter les programmes en ligne de commande, comme le bouton "X" pour les programmes graphiques.

De nombreux programmes en ligne de commande ont pour thème l'utilisation de Q(par exemple, manet top) ou de Ctrl+ C(par exemple, pinget watch) pour quitter, mais cela varie considérablement, en particulier parmi les éditeurs de texte:

  • Vim, en particulier, utilise la combinaison obscure d' :q!alors Enter, généralement précédée de plusieurs pressions, Escpour faire bonne mesure.
  • Emacs , un autre joyau, préfère Ctrl+ Xsuivi de Ctrl+ C.

Les rédacteurs comme celui-ci sont des pièges pour les inexpérimentés. Ma préférence et ma recommandation personnelles sont d'utiliser, lorsque contraint de modifier du texte sur la ligne de commande, d'utiliser plutôt le JOE (Joe's Own Editor), plus explicite .

ændrük
la source
4
En fait, je dirais qu’il nanos’agit d’un éditeur de texte pour console bien plus universel.
Jondavidjohn
@jondavidjohn Votre affirmation est sans objet. Je conviens que le nano est sans aucun doute plus universel, et je ne prétends pas qu’il est moins explicite que JE. Ma préférence pour JOE est due à son ensemble de fonctionnalités étendues , et ma recommandation aux utilisateurs inexpérimentés est influencée par des subtilités telles que l’utilisation du terme Save à la place de WriteOut archaïque .
ændrük
En règle générale, vous pouvez utiliser ^ Z pour suspendre le processus. Ensuite, vous pouvez le tuer, l'ignorer, le mettre en arrière-plan ou le ramener. (tuer% 1 ou tuer% x, bg, fg). De toute façon, il existe une certaine unité de contrôle du travail.
Belacqua
3

Outre la réponse de jondavidjohn, voici deux liens vers des informations indispensables sur l'utilisation de vim.

  1. Ceci est un graphique de clavier qui vous montre ce que chaque touche fait selon que vous soyez en mode édition, en mode commande ou en mode visuel:

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

  2. C’est le meilleur tutoriel vim que j’ai jamais travaillé. Il est conversationnel et facile à comprendre, ce qui est dû au format IRC / messagerie instantanée.

    http://www.vi-improved.org/tutorial.php

Enfin, certains, comme aendruk, ne souhaitent tout simplement pas utiliser les éditeurs de texte en ligne de commande avancés. Vim, en particulier, a une courbe d'apprentissage abrupte et demande un effort initial pour s'y habituer. Mais c'est très rapide et très puissant. Si vous êtes intéressé par Linux au-delà de l'utilisation de base d'un ordinateur de bureau, cela vaut la peine d'investir du temps dans l'apprentissage d'un éditeur de texte en ligne de commande décent comme Vim ou Emacs. Si vous avez juste besoin de modifier du texte sans trop vous soucier de cela, essayez gedit filename.txtplutôt de taper . Il lancera un programme graphique familier, un peu comme le Bloc-notes de Windows.

djeikyb
la source
@djeikyb: J'apprécie le fait que vous fassiez la distinction entre l'utilisation de bureau de base et l'édition de texte en ligne de commande avancée. La force d'Ubuntu par rapport aux autres distributions Linux réside dans sa capacité à rendre le bureau Linux accessible aux utilisateurs informatiques ordinaires, qui ont à son actif de plus en plus perçu le luxe unique de ne jamais avoir besoin de savoir ce que sont les éditeurs comme Vim.
ændrük
... C’est avec cette liberté particulière à l’esprit que je décide de travailler aussi haut que les méthodes de ligne de commande Linux traditionnelles, ce que j’ai la patience de faire lors d’une utilisation quotidienne de l’ordinateur. Je fais l'effort de n'utiliser que des outils simples et accessibles, principalement parce que je peux me le permettre . Il serait inexact de dire que je n'aime tout simplement pas les éditeurs de texte en ligne de commande. Au contraire, j'aime beaucoup Vim avec son plugin VimOutliner, et je lui en suis redevable pour son influence sur le projet Vimperator / Pentadactyl.
ændrük
... Cependant, je considère que mon utilisation personnelle de ces outils est un écart par rapport à l’utilisation habituelle de l’ordinateur. Je suis d’avis que ce serait un développement sain pour la communauté Ubuntu de suggérer moins facilement aux nouveaux arrivants que l’utilisation occasionnelle d’outils avancés avec des courbes d’apprentissage raides est la norme chez les utilisateurs quotidiens.
ændrük
@Letseatlunch, si votre objectif est de maîtriser Vim, je vous encourage donc vivement à poursuivre dans cette voie. Je veux seulement dire que même si Ubuntu offre beaucoup de ces outils avancés qui manquent totalement aux autres systèmes d’exploitation, apprendre à les utiliser ne devrait jamais être une nécessité pour utiliser Ubuntu.
ændrük
Grande clarification! Je vais modifier ma réponse pour mieux refléter cela. De plus, j’ai spécifiquement recommandé gedit à nano parce que gedit est de niveau supérieur avec une interface utilisateur familière, et parce que nano m’a ridiculement dérouté au début (que signifie le symbole «caret»? Comment puis-je quitter? Comment puis-je sauvegarder ??) . Ce qui est drôle maintenant, vu que vim est mon éditeur de choix.
djeikyb
2

si Esc :q!ça ne marche pas,

essayez d'abord Ctrl+ q(pour déverrouiller l'écran verrouillé avec Ctrl+ s)

puis réessayez Esc :q!(pour quitter sans sauvegarder) ou Esc :wq(pour sauvegarder et quitter)

Gael P
la source
0

Vous voulez sortir sans sauvegarder:

  1. Frappé ESC
  2. Frappé ZQ

Quitter avec save:

  1. Frappé ESC
  2. Frappé ZZ
Zoltan
la source