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 :
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).
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.
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:
lorsque nous appuyons sur <ESC>, cependant, le changement est dupliqué sur toutes les lignes.
(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 -s
lance 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
<<-EOF
indique à 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:update
Une erreur des débutants est d’oublier d’enregistrer réellement le fichier après la modification – supposant à tort que cela se fait automatiquement.:quit
Dernier point et non des moindres : n’oubliez pas de quitter réellement vim à nouveau.EOF
marque 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.
.
0 commentaire