ouragan Posté(e) le 2 octobre 2004 Partager Posté(e) le 2 octobre 2004 VI editeur de texte Plan en cours Liens Récapitulatif détaillé des commandes vi (en pdf) Taille: 91 ko (92 437 octets) merci à -rem- , Gauret, skippy380, et à tous ceux qui contribuent dans ce topic. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 2 octobre 2004 Auteur Partager Posté(e) le 2 octobre 2004 Une succinte présentation de vi vi est un éditeur de texte présent sur le système , en concurrence avec ee, sur les systèmes Linux comme BSD. Pour une utilisation de débutants Ce qui est nécessaire pour modifier des fichiers de configuration. Pour lire un fichier avec vi, il suffit d'écrire la commande vi suivie du nom du fichier. #vi /usr/home/monrépertoire/monfichier Vous remarquerez que le répertoire /home est sur FreeBSD un sous-répertoire de /usr. Vous remarquerez aussi que monfichier n'a pas d'extension. Ce sont les premiers bits du contenu d'un fichier qui permettent de décrire quel type de fichier c'est. Le contenu du fichier est alors affiché intégralement sur la page courante (console virtuelle ou Terminal de votre environnement graphique favori). Comment se déplacer et modifier le contenu? vi dispose de deux modes de fonctionnement: le premier accessible à l'ouverture d'un fichier, et chaque fois que l'on appuie sur la touche <Echap> (ou <Esc> ) est le mode d'édition. Les commandes disponibles et utiles sur ce mode sont les suivantes: .........Pour Déplacer le curseur -Les flèches: pour se déplacer dans le corps du texte. h Déplace le curseur d'un caractère vers la gauche. j Déplace le curseur d'une ligne vers le bas. k Déplace le curseur d'une ligne vers le haut. l Déplace le curseur d'un caractère vers la droite. ..........Pour Effacer des caractères ou des chaînes de caractère x Efface le caractère se trouvant sous le curseur dd Efface la ligne complète se trouvant sous le curseur dXd Efface X lignes d$ Efface les caractères de la ligne du curseur à la fin de la ligne dG Efface tout le texte du curseur à la fin du fichier .........Pour Copier une ligne: yy Copie la ligne sous le curseur yXy Copie X lignes depuis le curseur p Ajoute la ligne copiée à la suite de la ligne où se trouve le curseur Xp Colle X fois la ligne copiée .........Pour mettre en page le texte >> permet de faire une indentation vers la droite >X> permet de faire une indentation vers la droite sur les X lignes suivantes X>> permet de faire X indentations vers la droite X>Y> permet de faire X indentations vers la droite sur les Y lignes suivantes << permet de faire une indentation vers la gauche <X< permet de faire une indentation vers la gauche sur les X lignes suivantes X<< permet de faire X indentations vers la gauche X<Y< permet de faire X indentations vers la gauche sur les Y lignes suivantes .........Pour aller plus vite . Permet de répéter la derniere action X. Permlet de répeter X fois la derniere action ZZ Permet de remplacer :wq! (sauver et quitter en forçant) r Permet de substituer une lettre R Permet de passer en mode remplacement, equivalent de la touche insert sur le clavier. echap + i pour repasser en mode insertion. cw Permet de changer un mot dw Permet d'effacer un mot .........Pour le repérage set nu permet d'"afficher la numération des lignes set nonu permet de l'enlever Acces direct à une ligne: vi toto.c 911 ou vi +911 toto.c Positionner le curseur sur une ligne: <numbre> Positionne le curseur sur la ligne <nombre> .........Pour réparer les erreurs u Permet d'aller plus vite :q! Permet de quitter sans enregistrer (forcer à quitter) .........Pour Basculer en mode insertion de texte i passe en mode insertion juste avant le curseur a passe en mode insertion juste après le curseur <shift+a> passe en mode insertion à la fin de la ligne <shift+i> passe en mode insertion au début de la ligne o Démarre une nouvelle ligne au-dessous de la ligne où se trouve le curseur et place celui-ci en début de ligne O Démarre une nouvelle ligne au-dessus de la ligne où se trouve le curseur et place celui-ci en début de ligne .........Pour Basculer en mode Edition <Echap> .........Pour Enregistrer: :w :w! .........Pour quitter: :q :q! L'usage du ! point d'exclamation permet de forcer l'enregistrement ou de quitter (en particulier si vous avez modifié un texte et que vous ne vouliez pas). Et n'oubliez pas: surligner le texte que vous voulez copier, basculer en mode insertion à l'endroit où vous souhaitez l'insérez et faites un clic-milieu: c'est la version BSD-Linux du copier-coller. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 2 octobre 2004 Auteur Partager Posté(e) le 2 octobre 2004 Commandes avancées: Pour avoir plusieurs vi dans une seule et meme fenetre badd <nom_fichier> permet d'ajouter un buffer bn buffer suivant bp buffer précédent split de l'ecran hsplit split horizontalement l'écran pour afficher 2 fichiers ( buffer ) en meme temps, idéal pour les copier-coller. vsplit split verticalement l'écran. On peut les combiner, mais bon, écran 911 pouces requit à la fin.... Substitution ( ce que préfére -rem- sous vi ) %s/<expr>/<new_expr>/gc remplace ( s ) sur toutes les lignes ( % ) <expr> par <new_expr> pour toutes les occurences ( g ) avec confirmation ( c ). 0,Xs/<expr>/<new_expr>/g Remplace jusqu'a la ligne X <expr> par <new_expr> pour toutes les occurences ( g) X,$s/<expr>/<new_expr>/g Remplace de la ligne X a la fin du fichier <expr> par <new_expr> pour toutes les occurences %s/original/remplacement/gc Remplace de la ligne X a la fin du fichier <expr> par <new_expr> pour toutes les occurences avec confirmation ( c ) X,Ys/<expr>/<new_expr>/g Remplace de la ligne X à la ligne Y toutes les occurences (g) de <expr> par <new_expr> On peut ne rien mettre a la place de g, dans ce cas ca ne le fait que pour la premiere occurence de chaque ligne. On peut aussi mettre le nombre d'occurence que l'on veut a la place du g Recherche d'un expression /<expr> recherche expr n déplacement du curseur sur la prochaine occurence de <expr> N déplacement du curseur sur la précédente occurence de <expr> lecture du source d'une page web: vim http://nom_d_une_page_web.html Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 2 octobre 2004 Auteur Partager Posté(e) le 2 octobre 2004 Configuration de vi euh en cours. :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 2 octobre 2004 Auteur Partager Posté(e) le 2 octobre 2004 reserved Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 2 octobre 2004 Auteur Partager Posté(e) le 2 octobre 2004 reserved Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 2 octobre 2004 Auteur Partager Posté(e) le 2 octobre 2004 reserved Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 2 octobre 2004 Auteur Partager Posté(e) le 2 octobre 2004 reserved Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 2 octobre 2004 Auteur Partager Posté(e) le 2 octobre 2004 reserved Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 2 octobre 2004 Auteur Partager Posté(e) le 2 octobre 2004 reserved Lien vers le commentaire Partager sur d’autres sites More sharing options...
gauret Posté(e) le 2 octobre 2004 Partager Posté(e) le 2 octobre 2004 Pour les remplacements, on peut noter aussi l'option c qui permet de demander confirmation. :%s/original/remplacement/gc Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 2 octobre 2004 Auteur Partager Posté(e) le 2 octobre 2004 rajouté Lien vers le commentaire Partager sur d’autres sites More sharing options...
Skippy380 Posté(e) le 2 octobre 2004 Partager Posté(e) le 2 octobre 2004 Une possibilité interessante sous vi est de définir des macros à l'aide de la commande q. Il suffit de presser q, suivi de la lettre d'un registre puis d'effectuer un certain nombre d'operation, et de terminer l'enregistrement en pressant à nouveau q. On peur alors facilement rappeler l'ensemble de ces opérations en tapant @ suivi du registre utilise. Ce n'est pas clair ? Voici un exemple commenté : On part avec les lignes suivantes : stdio.h SDL/SDL.h SDL/SDL_image.h SDL/SDL_mixer.h on veut rajouter les include et les <> autour des noms de fichier. On se place sur la première ligne puis on commence à enregistrer dans le registre "a" : qa On se place ensuite en début de ligne puis on tape "include <", on va en fin de ligne et on tape ">" puis on passe à la ligne suivante. Iinclude <[Echap]A>[Echap]j On termine alors l'enregistrement : q Puis on applique aux 3 lignes suivantes : 3@a Et voila. Ca marche avec toutes les commandes, c'est donc pratique pour appliquer là même opération (on ouvre tous les fichiers dans des buffers différents, puis on tape :bn avant de terminer l'enregistrement, et le changement de buffer est donc inclu dans la macro. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Skippy380 Posté(e) le 2 octobre 2004 Partager Posté(e) le 2 octobre 2004 Encore un petit ajout, sur l'édition multi-fichiers cette fois. D'abord, il y a deux façons d'éditer plusieurs fichiers sous vi : - avoir une fenêtre splitée - avoir plusieurs buffers les deux manières pouvant être combinées. Pour splitter, celà à déja été dit plus tôt, on utilise :vsplit <fichier> :split <fichier> Un raccourci possible pour ouvrir une fenêtre vide est : Ctrl+w+s Ctrl+w+v Mais il existe aussi l'option interessante du diffsplit permettant de voir les differences entre deux fichiers : :diffsplit <fichier> :vertical diffsplit <fichier> Notez que la commande vertical peut s'appliquer à d'autres fonctions. Maintenant, le déplacement d'un split au suivant : Ctrl+w+w Il est aussi possible d'utiliser les touches hjkl pour se déplacer comme dans le texte, en les faisant préceder de Ctrl+w : Ctrl+w+h Ctrl+w+j Ctrl+w+k Ctrl+w+l On peut aussi les réarranger avec les commandes (échange avec la suivante, rotation) Ctrl+w+r Ctrl+w+x Vous voulez agrandir/ retrecir le split dans lequel vous êtes ? Ctrl+w++ Ctrl+w+- Pour aller plus vite (par exemple agrandir / retrecir de 5 lignes d'un coup) Ctrl+w+5++ Ctrl+w+5+- On peut aussi utiliser Ctrl+w+> Ctrl+w+< Les commandes longues existent aussi : :resize N :vertical resize N Pour ce qui est de l'utilisation de buffers, on peut faire passer un split dans un buffer caché avec :hide On passe d'un buffer au suivant/précedent avec :bn :bp On ouvre le buffer suivant/précedent dans un split avec :sbn :sbp Ca commence à faire beaucoup de commandes, et je vais pas toutes les lister. Il y'en a d'autres interessantes, je vous conseil la doc pour en savoir plus (/usr/share/vim/vimXX/doc/windows.txt pour ce sujet). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Skippy380 Posté(e) le 2 octobre 2004 Partager Posté(e) le 2 octobre 2004 Allez encore une killer feature de vi (plutôt pour programmer il est vrai) : le pliage de code (en anglais folding). C'est assez simple dans le principe : on réduit plusieurs lignes de code à une seule. Il existe cependant plein d'options permettant de rendre ca encore plus efficace. On commence simplement : pour plier du code, il faut créer un pliage, puis le fermer et l'ouvrir à volonté avec les commandes zf zc zo zC zO Les commandes zO et zC ont l'avantages d'ouvrir les plis recursivement. On peut aussi ouvrir/fermer tous les plis existants : zR zM Par exemple zf30j plie 30 lignes de code. On les réouvre facilement en se placant sur le pli et en tapant zo On le referme en se placant n'importe où dans le pli et en tapant zc Maintenant, on peut facilement automatiser le pliage en utilisant la commande :set foldmethod=indent qui plie automatiquement le code selon l'indentation. On ouvre alors chaque pli avec zo ou zc. Les possibilités sont manual, indent, expr, marker, syntax, diff On peut aussi décider d'ouvrir ou de fermer les plis automatiquement quand on y entre et quand on en sort :set foldopen=all :set foldclose=all Pour revenir au mode normal : :set foldopen= :set foldclose= Voila, avec tout ça, ca fait de quoi y voir plus clair dans son code. Apres, à chacun de trouver la methode qu'il préfère utiliser. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 3 octobre 2004 Auteur Partager Posté(e) le 3 octobre 2004 Merci skippy. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sandeman Posté(e) le 3 octobre 2004 Partager Posté(e) le 3 octobre 2004 une tout p'tite contrib mais ça dépanne toujours <shift>+J pour ramener la ligne suivante en bout de ligne Lien vers le commentaire Partager sur d’autres sites More sharing options...
BaubLeNabot Posté(e) le 3 octobre 2004 Partager Posté(e) le 3 octobre 2004 Comment faire pour le lancer sans tout les commetaires du fichier :/ Ca me soole certains fichiers avec trop de commentaires :/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sandeman Posté(e) le 3 octobre 2004 Partager Posté(e) le 3 octobre 2004 euh (la méthode sale) cp fichier fichier.comments grep -v "^#" fichier.comments > fichier vi fichier Lien vers le commentaire Partager sur d’autres sites More sharing options...
BaubLeNabot Posté(e) le 3 octobre 2004 Partager Posté(e) le 3 octobre 2004 euh (la méthode sale) cp fichier fichier.comments grep -v "^#" fichier.comments > fichier vi fichier Ca supprime les commentaires la j'imagine en plus :/ J'aimerais les avoir dans le fichier au cas ou, juste qu'ils appraissent pas quand j'ai pas envie de voir les commentaires Mais merci quand meme :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
gauret Posté(e) le 3 octobre 2004 Partager Posté(e) le 3 octobre 2004 Chez moi, avec la coloration syntaxique activée, les commentaires sont en bleu foncé. Sur un fond noir, ça dérange pas trop... :) A propos, vous pouvez activer la colorations syntaxique avec :syntax on Et activer un certain type de coloration avec par exemple :set syntax=html les différents modes sont dans /usr/share/vim/vim62/syntax/ sur une Fedora. Pour ce qui est des thèmes de couleurs de vi, essayez :colorscheme <TAB> Et chaque <TAB> vous proposera les différents thèmes de couleurs. Qui a dit que VI était un éditeur minimaliste ?!? Lien vers le commentaire Partager sur d’autres sites More sharing options...
gauret Posté(e) le 3 octobre 2004 Partager Posté(e) le 3 octobre 2004 A noter aussi la commande "vimtutor" qui lance le tutoriel intégré de VI. Et dans l'éditeur, ":help" vous affichera l'aide en ligne Lien vers le commentaire Partager sur d’autres sites More sharing options...
Skippy380 Posté(e) le 4 octobre 2004 Partager Posté(e) le 4 octobre 2004 Le pliage de code peut justement aider à supprimer les commentaires (enfin à les réduire à une seule ligne quand il y en a plusieurs qui se suivent). Pour cela, il faut utiliser le mode syntax. Par exemple pour les commentaires commencant par /* et finissant par */ : :syn region myFold start="/*" end="*/" transparent fold :syn sync fromstart :set foldmethod=syntax Si tu veux l'utiliser systématiquement, il faut simplement rajouter le mot fold à la fin des lignes définissant les items Comment dans les fichiers de syntax, et mettre la derniere ligne dant ton ~vimrc Lien vers le commentaire Partager sur d’autres sites More sharing options...
-rem- Posté(e) le 5 octobre 2004 Partager Posté(e) le 5 octobre 2004 Bon, impeccable. Ca tombe bien que tu l'aies fait, car en ce moment, je n'ai plus trop le temps de venir aussi souvent qu'avant sur pci. Ca va revenir, mais je souffle un peu. Donc ouragan, en plus, je suis sur que tu auras appris plein de trucs sur ton editeur préféré. JE cherche d'autres volontaires pour faire la meme chose avec les autres grands éditeurs de texte, style emacs, kate etc... Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 5 octobre 2004 Auteur Partager Posté(e) le 5 octobre 2004 ben oui c'est excellent, surtout le vimtutor, magnifique. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.