VIM offre plus de modes que vi (qui ne propose que les modes « normal », « insertion » et « ligne de commande »). Ces modes supplémentaires rendent VIM plus puissant et plus facile à utiliser ; pour cette raison, les utilisateurs de vim devraient au moins être conscients de leur existence. (NOTE : Si jamais vous entrez dans un mode qui ne vous est pas familier, vous pouvez généralement appuyer sur ESC pour revenir au mode normal.)

Voici un bref aperçu de chaque mode disponible dans vim :

d

Ligne de commande

Mode Ex

Nom Description page d’aide
normal Pour la navigation et la manipulation du texte. C’est le mode dans lequel vim démarre habituellement, auquel vous pouvez généralement revenir avec ESC. :help Normal-mode insert Pour insérer du nouveau texte. La principale différence avec vi est que de nombreuses commandes « normales » importantes sont également disponibles en mode insertion – à condition d’avoir un clavier avec suffisamment de méta-touches (comme Ctrl, Alt, Windows-key, etc.). :help Insert-mode
visuel Pour la navigation et la manipulation des sélections de texte, ce mode vous permet d’exécuter la plupart des commandes normales, et quelques commandes supplémentaires, sur le texte sélectionné. :help Visual-mode
select Similaire au visuel, mais avec un comportement plus proche de MS Windows. :help Select-mode
Pour entrer les commandes de l’éditeur – comme les commandes d’aide dans la 3e colonne. :help Command-line-mode
Similaire au mode ligne de commande mais optimisé pour le traitement par lots. :help Ex-mode

Chaque mode est décrit ci-dessous.

insertion (et remplacement)Edition

En mode insertion, vous pouvez taper un nouveau texte. Dans vi classique, le mode insertion était juste cela : insérer du texte et rien d’autre. Vim fait usage de nombreuses méta-touches des claviers modernes ; avec un vim correctement configuré, les touches du curseur devraient fonctionner en mode insertion.

Le mode insertion peut être atteint de plusieurs façons, mais certaines des plus courantes sont <a> (append after cursor), <i> (insérer avant le curseur), <A> (ajouter en fin de ligne), <I> (insérer en début de ligne), <C> (changer en fin de ligne), et <s> (caractères de substitution).

Si vous souhaitez modifier du texte en le sélectionnant et en le remplaçant, comme cela est courant dans de nombreux éditeurs basés sur une interface graphique, <C> fait très bien l’affaire. Le texte sélectionné est supprimé avant d’entrer en mode insertion.

normal (commande)Edition

À moins que vous n’utilisiez l’interface evim, c’est le mode standard de vim (vim démarre en mode normal). Tout ce que l’utilisateur tape en mode normal est interprété comme des commandes (y compris celles qui font basculer l’utilisateur vers d’autres modes).

Si vim est démarré en tant que evim (evim sur la ligne de commande), vim garde l’utilisateur en mode insertion tout le temps. Le mode normal peut être atteint pour des commandes individuelles en appuyant sur <Ctrl-O> suivi de la commande souhaitée. Après une commande, l’utilisateur est renvoyé en mode insertion. (Chaque commande normale doit d’abord être lancée en appuyant sur <Ctrl-O>).Vous pouvez également entrer en mode commande à partir du mode insertion en appuyant sur la touche Esc.

visualEdit

Il existe trois différents types de surlignage en mode visuel. Chacun permet à l’utilisateur de mettre en évidence le texte de différentes manières. Les commandes qui n’affectent normalement qu’un caractère, une ligne ou une zone affecteront le texte mis en surbrillance (comme le passage du texte en majuscules (<Ctrl-~>), la suppression de texte (<d>), l’indentation des lignes (>><<, et =), et ainsi de suite).

Il existe trois (sous-)types de modes visuels qui sont le visuel, le visuel-bloc , et le visuel-ligne

Mode visuel simpleEdit

Le mode visuel simple est lancé en appuyant sur ‘v’ en mode normal. À tout moment, appuyer sur ESC ou <v> permet de quitter le mode VISUEL sans effectuer d’opération. Les commandes de mouvement modifient la zone de sélection, tandis que d’autres commandes effectueront généralement l’opération attendue sur le texte (il existe quelques exceptions où le comportement changera ou où la commande ne fonctionnera pas, mais si elle ne fait pas ce que vous espériez, vous pouvez toujours annuler avec <u>).

Mode visuel du blocEdit

Le mode visuel du bloc est lancé en appuyant sur <Ctrl-V> (ou <Ctrl-Q> dans certaines versions de Windows. Si aucune de ces méthodes ne fonctionne, utilisez « :help visual-block » pour savoir comment faire). Les blocs visuels maintiennent toujours une sélection rectangulaire, ne mettant en évidence que des colonnes spécifiques de caractères sur plusieurs lignes. Dans l’exemple suivant, l’utilisateur veut mettre un tiret dans chaque numéro de téléphone entre les deuxième et troisième champs de chiffres :

L’utilisateur déplace d’abord le curseur en haut de la colonne (vous pourriez commencer en bas si vous le souhaitez).

Vim block change example.jpg

Puis, appuyez sur <Ctrl-V>. Cela vous met en mode bloc-visuel (VISUAL BLOCK apparaît en bas pour vous indiquer dans quel mode visuel vous vous trouvez). Ensuite, descendez jusqu’à la dernière ligne souhaitée. Vous pouvez voir une seule colonne mise en évidence dans cet exemple, mais vous pourriez vous déplacer à droite ou à gauche et mettre en évidence plus de colonnes.

Modification du bloc Vim exemple2.jpg

Dans ce cas, l’utilisateur veut changer les espaces en tirets. Pour changer le texte, nous appuyons sur ‘c’. Les espaces disparaissent tous, et les changements sont affichés uniquement dans la ligne actuelle pendant que nous tapons:

Vim block change example3.jpg

lorsque nous appuyons sur <ESC>, cependant, le changement est dupliqué sur toutes les lignes.

Vim block change example4.jpg

(Note : si vous voulez simplement insérer du texte plutôt que de le modifier, vous devrez utiliser ‘<I>’ ou ‘<A>’. plutôt que ‘<i>’ ou ‘<a>’.)

Mode visuel linéaireEdit

En mode visuel linéaire, entré par <Shift-V>, des lignes entières sont mises en évidence. Sinon, cela fonctionne généralement comme le mode visuel simple.

selectEdit

Comme le mode visuel mais avec un comportement plus proche de l’AUC. Cela signifie que si vous tapez un seul caractère, il remplace la sélection. Bien sûr, vous perdez toutes les opérations à une touche sur la sélection comme <U> pour mettre une sélection en majuscule.

Ce mode est généralement activé par :

:behave mswin

qui est par défaut pour les installations MS-Windows. Vous pouvez obtenir le mode normal avec

:behave xterm

Comm-lineEdit

Dans la ligne de commande, vous pouvez exécuter des commandes Ex, entrer des modèles de recherche et entrer des commandes de filtre. En bas, une ligne de commande apparaît où vous pouvez saisir la commande. Contrairement à vi – vim supporte les touches de curseur, ce qui rend la saisie des commandes beaucoup plus facile. Après une commande, l’éditeur revient en mode normal.

Vous pouvez entrer une commande Ex en tapant deux points : en mode normal. Voici quelques exemples :

:set number:substitute/search/replace/ig

Vous pouvez saisir un modèle de recherche en tapant une barre oblique / pour une recherche en avant, ou un point d’interrogation ? pour une recherche en arrière. Vous pouvez utiliser les expressions régulières étendues de vim dans ces motifs de recherche. Par exemple,

/word

saut à la prochaine occurrence de « mot » (même si c’est « épée » ou « sans mot »), mais

/\<word\>

saute uniquement à un mot complet « mot » (pas « épée » ou « sans mot »).

Vous pouvez entrer un filtre en tapant ! suivi d’une commande de mouvement, puis d’une commande shell à exécuter sur le texte capturé par le mouvement. Par exemple, sous Linux et d’autres systèmes d’exploitation de type UNIX, taper

!22jsort

triera la ligne actuelle et les 22 suivantes avec la commande sort system. La même chose peut être faite avec

:.,.+22!sort

En fait, vim crée la commande ci-dessus pour vous si vous suivez le premier exemple !

Mode ExEdit

Le mode Ex est similaire au mode ligne de commande car il vous permet également de saisir des commandes Ex. Contrairement au mode ligne de commande, vous ne reviendrez pas automatiquement au mode normal. Vous pouvez entrer une commande Ex en tapant un Q en mode normal et le quitter à nouveau avec la commande :visual. Notez que le mode Ex est conçu pour le traitement par lots et, en tant que tel, ne supportera pas les mappings ou l’édition en ligne de commande.

Pour le traitement par lots, le mode Ex est normalement lancé de l’extérieur en appelant l’éditeur avec l’option « -E ». Voici un exemple réel tiré de la spécification du gestionnaire de paquets RPM:

vim -E -s Makefile <<-EOF :%substitute/CFLAGS = -g$/CFLAGS =-fPIC -DPIC -g/ :%substitute/CFLAGS =$/CFLAGS =-fPIC -DPIC/ :%substitute/ADAFLAGS =$/ADAFLAGS =-fPIC -DPIC/ :update :quitEOF

Le RPM utilise Bash comme langage de script ce qui rend l’exemple un peu difficile à comprendre car deux langages de script différents sont mélangés dans un seul fichier.

vim -E -slance vim en mode Ex amélioré qui permet des commandes plus avancées que le mode Ex compatible avec vi (qui est lancé avecvim -e -s<<-EOFindique à bash de copier toutes les lignes qui suivent dans l’entrée standard du programme externe qui vient d’être lancé. Le ‘-‘ indique au shell de dépouiller les caractères de tabulation.:sont des lignes contenant des commandes Ex que vim exécutera. Le : est facultatif mais utile lorsque deux langages de script sont mélangés dans un même fichier:updateUne erreur des débutants est d’oublier d’enregistrer réellement le fichier après la modification – supposant à tort que cela se fait automatiquement.:quitDernier point et non des moindres : n’oubliez pas de quitter réellement vim à nouveau.EOFmarque la fin de la redirection de l’entrée standard – à partir de maintenant, bash exécutera à nouveau la commande elle-même.

vim -E -s Makefile <Makefile-Fix1.vim

Si votre shell ne permet pas une redirection aussi astucieuse de l’entrée standard, alors vous pouvez toujours utiliser une approche plus classique de la redirection des E/S en utilisant deux fichiers :

vim -E -s Makefile <Makefile-Fix1.vim

Et si vous n’avez pas de redirection d’entrée standard disponible, alors vous pouvez essayer l’option -c en combinaison avec la commande source :

vim -E -s -c "source Makefile-Fix1.vim" Makefile

Avec le mode Ex amélioré, de nombreuses tâches classiquement effectuées par awk ou sed peuvent être réalisées avec vim et souvent mieux ainsi :

  • Awk et sed sont orientés flux – ils ne lisent le fichier que vers l’avant du début à la fin alors que vim est orienté tampon – vous pouvez avancer et reculer dans le fichier comme vous le souhaitez.
  • Les expressions régulières de vim sont plus puissantes que celles d’awk et de sed – par exemple, vim peut faire des correspondances sur plusieurs lignes et supporte les correspondances nulles.

.

Catégories : Articles

0 commentaire

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *