====== l'éditeur vi ====== ===== pourquoi vi comme éditeur ? ===== - parce qu'il existe de base sur toutes les machines Unix/linux - parce qu'en single user, c'est le seul éditeur disponible - parce qu'il marche même sous dos avec une très petite mémoire - parce que l'on peut se débrouiller pour commencer avec 10 commandes en fait je recommande vim (Vi Improved) plutôt que le vi de base pour x raisons : - colorisation syntaxique - langage de script - completion - ... remarque : emacs est peut-être (troll !) plus puissant, mais aussi beaucoup plus lourd ===== installation ===== vim est distribue dans la distribution Redhat en 4 packages * vim-common : indispensable * vim-minimal : indispensable (le vi de base) * vim-enhanced : les fonctionnalités intéressantes * vim-X11 : la version X (gvim) ---- ===== les fichiers dos ===== pour passer un fichier dos (crlf) au format unix, 3 solutions :\\ * il suffit de taper dans vi //:set fileformat=unix//, puis de sauvegarder * supprimer les ^M de fin de ligne avec la commannde //:%s!^V^M$!!// * utiliser le logiciel //dos2unix// (package dos2unix) ---- ===== sélection d'un bloc ===== - de lignes complétes : avec des marques (commandes m) - irrégulier : commande v ---- ===== commandes répétitives ===== 2 solutions - les macros : commande :map - enregistrer une séquence (commande q0) puis la rejouer (commande @0) ---- ===== complétion ===== en mode insertion, CTRL P fait des propositions à partir du texte déjà saisi ---- ===== travail sur plusieurs fichiers ===== - un par un : on change de fichier par :n (:N pour revenir en arrière) - plusieurs a la fois: //CTRL W s// (split) pour découper l'écran, //CTRL W w// pour changer aide :help windows ---- ===== importer le résultat d'une commande ===== :r !commande ---- ===== les buffers ===== pour utiliser un buffer : (ici le buffer a) avec les commandes yYpP\\ "a cmde ---- ===== utiliser les tags ===== pour les programmeurs, permet de se déplacer de fonction en fonction sans avoir a connaître le fichier et la ligne ou elles sont. \\ aide :help tags ---- ===== undo/redo ===== * pour supprimer une modification : //:u// * pour la remettre : //:redo// ou //Ctrl-R// ---- ===== folder ===== a partir de la version 6, cela permet de "compresser" des blocs de code * zfap : pour créer un folder * zo : pour l'ouvrir * zc : pour le fermer aide :help folding ---- ===== indentation ===== pour re-indenter proprement un texte : * le marquer en passant en mode visuel (commande v) * touche "=" ---- ===== vimdiff ===== //vim -d// ou //vimdiff// est un mode pour montrer les différences entre fichiers et permet les merges (:help diff) \\ 2 commandes pour transférer les modifs d'un fichier sur l'autre * do (diff obtain) : transfert vers la fenetre courante * dp ( diff put ) : transfert depuis la fenêtre courante ---- ===== les fichiers binaires ===== pour éditer les fichiers binaires (en hexa) : plusieurs solutions * [[http://biew.sourceforge.net/|bview]] : pas mal du tout * [[http://home.mho.net/jswaby/fb.html|fb]]: trés puissant en ligne de commande ---- ===== astuces ===== * effacer les 4 premiers caractères d'un fichier : //:%s!^....!!// * basculer de less vers vi : commande v * afficher les tabulations : //set list// ---- ===== plugin ===== vim peut être amélioré/étendu a l'aide de plugins (il y en a des centaines sur [[http://www.vim.org/|vim.org]]), qui peuvent être installés : * soit pour tous (/usr/share/vim/plugin/) * soit pour un usager seulement (~/.vim/plugin) astuce : pour prendre en compte la documentation locale : "vim -c "helptags ~/.vim/doc" -c "q"" ---- ===== développer ===== des [[http://mamchenkov.net/blog/item/vim_for_perl_developers|conseils]] pour faire du perl avec vim ---- ===== liens ===== quelques sites sur vi: - le site de [[http://www.vim.org/|vim]] - [[http://www.thomer.com/thomer/vi/vi.html|VI LOVERS HOME PAGE]] - le site de [[http://hermitte.free.fr/vim/|Luc Hermitte]] : par un Toulousain, en anglais, pour les pro ---- ===== articles ===== * linux magazine 14, p24 * linux magazine 25, p92 * linux magazine 26, p96 --- //[[eric.gerbier@free.fr|eric gerbier]] 2009/09/15 13:53// {{tag>developpement perl}}