VIM 04 – Utiliser des onglets dans l’éditeur Vim – ouvrir un Shell depuis Vim

pVim sima78, juin 2020
Vim sima78

Utiliser des onglets dans l’éditeur Vim – ouvrir un shell

Je souhaite partager un usage de Vim très intéressant: pouvoir travailler dans Vim avec des onglets et dans chaque onglet des fichiers différents et/ou même plusieurs fenêtres dans chaque onglet.

Bon, c’est le quatrième billet sur le sujet, si vous découvrez Vim, commencez par lire « VIM 01 – Entrer et sortir de Vim et Vimtutor » et surtout suivez le tutoriel « Vimtutor ».

Commencez par ouvrir plusieurs fichiers dans Vim avec la commande:

$ vim -p fichier1 fichier2 fichier3

Ce que dit le « man vim » concernant l’option « -p »

-p[N]       Ouvre N onglets. Quand N est omis, ouvre un onglet pour chaque fichier fichier.

Les trois fichiers ont été ouverts dans Vim sur des onglets différents.

vim-04-sima78.png, juin 2020

Si vous voulez en ouvrir un autre, il suffit de taper la commande

:tabnew fichier4

Et un nouvel onglet s’ouvrira.

Il y a aussi d’autres options pour ouvrir les onglets à différents endroits:

:-tabnew → ouvre l'onglet avant l'onglet actuel
:0tabnew → ouvre l'onglet en première position
:$tabnew → ouvre l'onglet en dernière position

Dans la partie supérieure l’on voit les différents onglets ouverts et le nom du fichier. Si vous modifiez le texte d’un onglet, le signe + apparaît à côté de son nom pour indiquer qu’il a été modifié et non sauvegardé.

Si vous divisez « Splitter » un onglet (comme vu dans Vim-03), un numéro apparaît à côté du nom, indiquant le nombre de divisions de cet onglet

Pour se déplacer entre les différents onglets, plusieurs options. En mode normal:

gt → passe à l'onglet suivant
gT → passe à l'onglet précédent
:tabfirst → passe au premier onglet
:tablast → passe au dernier onglet

Il y a aussi la possibilité de pouvoir réorganiser les onglets existants de la manière que vous souhaitez. Pour ce faire, il y a la commande « :tabm n » où « n » est le numéro de la position où l’on veut déplacer l’onglet en cours, en tenant compte du fait qu’il commence à compter à partir de la position 0.

Mettre l’onglet actuel en première position, nous tapez:

:tabm 0

Si vous voulez voir les onglets que vous avez ouverts et ce que vous avez dans chacun d’entre eux, vous pouvez exécuter la commande

:tabs

Exemple:

$ vim -p work/arch-vim/vim-03/vim-todo-lists.vim todo.vim Documents-vim.todo-list.txt

Dans Vim tapez « :tabs »

:tabs

Résultat:

Onglet 1
>   work/arch-vim/vim-03/vim-todo-lists.vim
Onglet 2
    todo.vim
Onglet 3
    Documents-vim.todo-list.txt
Appuyez sur ENTRÉE ou tapez une commande pour continuer

Cela nous indique que je suis actuellement sur l’onglet 1 « > » et le nom de fichier ouvert dans chaque onglet.

J’en ai fini avec les onglets, passons à l’ouverture d’un Shell

Ouvrir un shell depuis Vim

Vous êtes sur vim, et soudain, vous avez besoin de vérifier une ligne de commande ou autre chose depuis un terminal.
Inutile d’ouvrir un autre terminal, ou un onglet terminal (ne pas confondre avec onglet Vim vu plus haut), ou quitter Vim pour y revenir….

Rien de plus simple que d’ouvrir un shell depuis Vim.

Tapez l’une de ces deux commandes :

:shell

ou simplement:

:sh

Pour quitter le shell et revenir à notre vim, tapez

exit

Rajout suite aux commentaires 2020-0622-22:02.

On peut visualiser le shell en faisant:

:!

Appuyer sur « Entrée » pour revenir à Vim

Ou encore accéder au shell en tapant Ctrl+z pour passer Vim en arrière plan, faites ce que vous avez à faire, puis exécutez « fg » pour faire revenir Vim au premier plan.

Fin de rajout

Fin de ce billet Vim 04 – Utiliser des onglets dans l’éditeur Vim – ouvrir un shell

Pour retrouver les billets concernant la série Vim:
https://sima78.chispa.fr/sima78/index.php?tag/Vim

Vim 03 – Diviser et redimensionner des fenêtres

Vim sima78, juin 2020
Vim sima78

Diviser « Splitter » et redimensionner des fenêtres dans l’éditeur Vim.

Lorsque vous travaillez avec un éditeur de texte il est souvent utile de pouvoir diviser en plusieurs fenêtres.

Vim permet de diviser facilement la fenêtre, verticalement et/ou horizontalement. Il est ensuite possible de redimensionner chacune des fenêtres pour les adapter à nos besoins.

L’intérêt d’avoir plusieurs fenêtres (deux, trois, quatre, etc.) est de permettre de voir  d’autres parties du fichier en cours d’édition, d’autres fichiers, l’aide de Vim, etc.

Voyons comment diviser une fenêtre sur l’éditeur Vim

Horizontalement :

:sp

Verticalement :

:vsp

Vous pouvez également utiliser les deux commandes simultanément en fonction des besoins, voir ci-dessous.
Vous déplacer d’une fenêtre à l’autre « Ctrl »+ »w »+ »flèche » ou comme vu dans VimTutor pour les déplacements (h, j, k, l)

Dès que vous faites « Ctrl+w » vous devez voir en bas à droite de votre console « ^w »
C’est-à-dire que nous appuyons sur la touche Ctrl et la touche w et nous pouvons relâcher, puis sur la touche dont nous avons besoin.

^w(+)Flèche haut : Passer à la fenêtre supérieure
^w(+)Flèche bas : Passer à la fenêtre inférieure
^w(+)Flèche droite : Passer à la fenêtre de droite (au même niveau !)
^w(+)Flèche gauche : Passer à la fenêtre de gauche (au même niveau !)

ou

^w(+)h : Placer le curseur à la fenêtre de gauche
^w(+)j : Placer le curseur à la fenêtre inférieure
^w(+)k : Placer le curseur à la fenêtre supérieure
^w(+)l : Placer le curseur à la fenêtre de droite

Je dois vous dire que ^w(+)lettre ne fonctionne pas sur mon pc? J’utilise les flèches, alors qu’en mode normal les lettres de déplacement fonctionnent aussi bien que les flèches.

Il est aussi possible de redimensionner les fenêtres à nos besoins.

^w(+)+ : pour agrandir la fenêtre
^w(+)- : pour réduire la taille de la fenêtre

Si nous voulons augmenter ou diminuer la fenêtre de 10 lignes

^w(+)10+ : pour agrandir la fenêtre de 10 lignes

Réduire de 5 lignes

^w(+)5- : pour réduire la fenêtre de 5 lignes

Pour agrandir ou réduire une fenêtre divisée verticalement

^w(+)>
^w(+)<

De même, si nous souhaitons agrandir ou réduire d’un certain nombre de colonnes

^w(+)10>
^w(+)10<

Pour dimensionner une fenêtre à la taille maximale autorisée

^w(+)| : pour la division verticale
^w(+)_ : pour la division horizontale

Enfin, si nous souhaitons une répartition égale des espaces

^w(+)=
vim-03 Sima78, juin 2020
vim-03 Sima78

Rajout suite au commentaire:

Bien entendu, pour fermer les fenêtres il suffit de se positionner dessus et de taper (en mode normal)

:q

Fin de rajout

Fin de ce billet sur Vim et la division et la dimension des fenêtres.

Pour retrouver les billets concernant la série Vim:
https://sima78.chispa.fr/sima78/index.php?tag/Vim

VIM 02 – Afficher les numéros de ligne dans l’éditeur

Vim sima78, juin 2020
Vim sima78

Afficher les numéros de ligne dans l’éditeur Vim

Deuxième billet de la série Vim.

Il arrive souvent lors d’un bug que le message d’erreur vous renvoi vers un numéro de ligne d’un fichier, ou un tutoriel vous suggère de modifier tel mot par tel autre à la ligne n°x.

L’éditeur Vim n’affiche pas par défaut les numéros de ligne d’un fichier. Voyons comment les activer et autres astuces.

Il faut dire que Vim pourrait être un peu plus « convivial ». Ce qui manque dès le démarrage, c’est que les numéros de ligne d’un fichier ne soient pas affichés.

Les activer est une chose très simple, comme nous le verrons. Mais nous en apprendrons aussi davantage sur ces informations pratiques offertes par Vim et sur d’autres façons alternatives d’afficher les numéros de ligne dans Vim.

Pour que l’éditeur Vim puisse afficher les numéros de ligne d’un fichier, il doit être configuré, car par défaut il n’est pas activé. Mais Vim a plusieurs options pour cette fonctionnalité.

PS: Si vous avez suivi le tutoriel VimTutor, vous devriez savoir que pour activer la « zone commande » (mode normal)vous devez  appuyer sur la touche « Echap » ou « Esc ». Par défaut, lorsque vous ouvrez vim, il s’ouvre en mode « normal », si vous souhaitez modifier du texte il faut passer en mode « Insertion » en tapant :i (il y a d’autre touches mode insertion…

Rajout du 22/06/2020 suite à une question dans les commentaires

Ouvrir un fichier à une ligne bien précise:

Vous souhaitez ouvrir le fichier toto.txt à la ligne 127. La commande est :

vim +[numéro-de-ligne] nom-du-fichier dans notre exemple:

vim +127 toto.txt

Fin du rajout.

L’une des commandes suivantes peut être exécutée pour afficher les numéros de ligne :

:set number
:set nu

Si nous voulons les désactiver, nous pouvons exécuter l’une des commandes suivantes :

:set nonumber
:set nonu

Si nous voulons passer d’un mode à l’autre, nous pouvons exécuter l’une des commandes suivantes :

:set number!
:set nu!

Ce qui signifie que si vous tapez la commande « :set nu! » une première fois vous aurez la numérotation, si vous retapez « :set nu! », annule la numérotation.

Vous pouvez aussi aller à une ligne spécifique. Par exemple, pour aller à la ligne 17 de votre document, étant en mode normal, nous exécutons la commande : (cela fonctionne même si les numéros de ligne ne sont pas affichés.)

:17

Afficher les numéros de ligne dans Vim de manière relative

Avec cette option, chaque numéro de ligne est numéroté non pas à partir du début du texte de manière immuable, mais à partir de la position du curseur, qui sera marquée comme la position 0.

Bien entendu, comme celui-ci change de position au fur et à mesure que nous avançons dans le document, ces chiffres relatifs changeront également.

Pour activer cette option, nous pouvons le faire en exécutant l’une des commandes suivantes :

:set relativenumber
:set rnu

Pour désactiver :

:set norelativenumber
:set nornu

Heu, juste une précision, les commandes qui sont données par deux sont similaires, ce qui signifie que vous pouvez activer avec « :set relativenumber » et désactiver avec « :set nornu » et inversement.

Pour alterner entre une option et une autre, nous pouvons le faire au moyen de n’importe laquelle de ces commandes :

:set relativenumber!
:set rnu!

Si nous voulons faire un saut de 5 lignes à partir de la position du curseur, nous pouvons le faire avec la commande :

5k

Afficher les numéros de ligne dans Vim de manière « hybride »

Depuis la version 7.4 de Vim, l’activation des deux options « number » et « relativenumber » produit un mode de numérotation de ligne hybride.

Il affiche tous les numéros de ligne de manière relative, à l’exception de la ligne où se trouve le curseur, qui affichera le numéro de ligne absolu, au lieu du numéro 0 qu’elle affichait en mode relatif.

Pour activer ce mode de numérotation des lignes, nous pouvons le faire avec n’importe laquelle de ces commandes :

:set number relativenumber
:set nu rnu

Ce qui signifie que vous pouvez également le faire en deux fois… vous avez besoin de la numérotation vous faites « :set nu », puis vous avez besoin de la numérotation relative sans perdre votre numéro de ligne, tapez « :set rnu »… Vous souhaitez revenir à la numérotation basique, tapez « :set nornu »…

La largeur de la colonne où sont indiqués les numéros de ligne est configurable. Vous pouvez régler la largeur à l’aide de n’importe laquelle des commandes :

:set numberwidth=4
:set nuw=4

Fin de ce billet sur Vim et la numérotation.

Pour retrouver les billets concernant la série Vim:
https://sima78.chispa.fr/sima78/index.php?tag/Vim

VIM 01 – Entrer et sortir de Vim et Vimtutor

Vim sima78, juin 2020Mon premier article d’une série sur Vim. Beaucoup de choses ont déjà été publiés sur le sujet, j’en suis conscient, j’espère faire découvrir Vim d’une façon différente et c’est surtout un prétexte pour m’y replonger, me redonner le reflex Vim et certainement me perfectionner.

Ce premier billet sur le sujet est très basique, le but est de savoir entrer et sortir de vim d’apprendre le minimum syndical au niveau des commandes pour éviter de revenir sur certaines commandes dans les articles qui suivront.

Je ne compte pas parler des versions graphiques, ni comment installer Vim car il me semble que cela l’est par défaut sur toutes les distributions linux (je n’ai pas souvenir d’avoir fait un jour « apt-get [ou apt] install vim », mais bon.)[voir les commentaires en fin de billet]. Je ne rentrerai pas dans la bataille Vim contre Emacs, ni dans les comparaisons avec d’autres éditeurs de textes que j’utilise régulièrement « Gedit« , « Nano » qui ont aussi toute leur utilité.

Là c’est simple, ouvrez une console et tapez « vim » :

$ vim

vim 01 01sima78, juin 2020

Comment sortir de l’éditeur Vim ?

Vous êtes coincé dans l’éditeur de Vim et vous ne savez pas comment en sortir ? Vous n’êtes pas le seul à qui cela est arrivé !

Pourtant c’est écrit à l’ouverture de vim.

Mais cela arrive au débutant, surtout si pour une raison quelconque, un fichier a été ouvert dans l’éditeur Vim (que vous découvrez) et que vous souhaitez quitter mais ne trouvez pas comment le faire, nous allons maintenant voir la solution. Mais ne soyez pas frustré, vous n’êtes pas le premier.

Une question banale ?

Le site web Stack Overflow est l’une des communautés de développeurs importantes et réputées qui cherchent des solutions, de l’aide sur la façon de résoudre les différents problèmes rencontrés par les programmeurs de nombreux domaines et langages.
Et pourtant il y a la question d’un utilisateur qui demande à la communauté comment sortir de l’éditeur de Vim ? Alors une question plutôt banale… ou pas tant que ça ! il suffit de lire le fil pour voir l’importance de la question.
Pendant des années, cette question a été une blague récurrente sur certains réseaux sociaux.

Alors que personne ne se moque de ceux qui pose la question et ne retardons pas plus longtemps la solution. Voici la réponse à la question « comment sortir de l’éditeur Vim? » :

  • Appuyez sur la touche Echap ou Esc. Le curseur va se placer en bas (la zone de commande)
  • Appuyez sur la séquence de touches :q
  • Vous pouvez également appuyer sur :q! pour quitter l’éditeur sans enregistrer les modifications
  • Appuyez sur la touche Entrée

Résumé des commandes. D’abord, nous appuyons sur Echap ou Esc pour nous placer dans le tampon inférieur en mode normal, et :

  • : q → quitte le fichier, si nous n’avons aucune modification sans l’enregistrer, il suffit de quitter.
  • : q! → quitte le fichier en supprimant les modifications non enregistrées.
  • : w → enregistre les modifications apportées au fichier, mais ne quitte pas Vim pour continuer à modifier le fichier.
  • : wq → enregistrer les modifications et quitter Vim.
  • : x → identique à la précédente.

Bien, vous savez entrer et sortir de l’éditeur Vim. Bon, finalement rien de compliqué jusque-là, alors passons à la suite, c’est encore plus simple.

VimTutor

Une application pour apprendre pas à pas les premières commandes sur Vim, avec cela vous allez vous familiariser avec Vim.
Bah, pourquoi tu n’as pas commencé par ça Sima78 ?
Commencer par quelques difficultés lorsque l’on découvre une application (bon, ce n’était pas non plus l’enfer…) et que l’on passe soudainement à quelque chose de plus ludique, celui qui n’a pas décroché va se dire « bah, moi aussi je peux utiliser Vim »… Du moins j’espère que ce sera la réaction du débutant.

Donc Vimtutor pour apprendre pas à pas, il faut commencer par l’installer (sur Debian et dérivées) :

# apt install vimtutor

ou

$ sudo apt install vimtutor

Puis on lance Vimtutor

$ vimtutor

Le résultat :

vim 01 03, juin 2020

Suivez le tuto pendant 25, 30 minutes. Recommencez jusqu’à bien maîtriser ces commandes de bases, vous aurez l’essentiel pour commencer à utiliser basiquement Vim et surtout pour aller plus loin.