Outils pour utilisateurs

Outils du site


issue54:c_c

In the process of configuring ArchLinux on a PC, I realized just how much more efficiently I work in Vim than I do in any other text editor. So, when Article Day rolled around, I checked to see if there had been an article on Vim. Lo and behold, there was only a brief introduction to Vim. To start with, I should probably differentiate a text editor from an office suite like OpenOffice/LibreOffice. A text editor is used for editing stuff like *.txt, *.rtf, *.conf, *~, and basically any other plain text document format (i.e. no formatting). An office suite, on the other hand, works on *.doc and *.odt files (among others). I usually use plain text documents for quick to-do lists, and for writing code. I'm fairly certain there are many of you out there who either write quick notes to themselves, write code (be it software or websites), and perhaps edit some configuration files. What's the difference between Vim and GVim? Vim is the console-oriented verfsion of the program (for use in gnome-terminal, rxvt-unicode, tty screens, and so forth). GVim is a graphical front-end for Vim, and allows easy access to some of the more esoteric commands.

C'était lorsque je configurais ArchLinux sur un PC que je me suis rendu compte à quel point je travaille de façon beaucoup plus efficace avec Vim qu'avec aucun autre éditeur de texte. Ainsi, lorsque le Jour de l'article a pointé son nez, j'ai vérifié s'il y avait déjà un article à son sujet. Et voilà qu'il n'y avait qu'une brève présentation de Vim. Pour commencer, je dois sans doute distinguer un éditeur de texte d'une suite bureautique comme OpenOffice/LibreOffice. Un éditeur de texte est utilisé pour éditer des trucs comme *.txt, *.rtf, *.conf, *~ et essentiellement tout autre format de document en texte simple (c-à-d, sans formatage). Quant à une suite bureautique, elle fonctionne notamment avec des fichiers *.doc et *.odt (parmi bien d'autres). Je me sers généralement de documents en texte simple pour créer des listes rapides de choses à faire et pour écrire du code. Je suis quasiment sûr qu'il y en a beaucoup parmi vous qui, soit s'écrivent de notes rapides, soit font du codage (de logiciels ou des sites web) et modifient, peut-être, certains fichiers de configuration.

Why should I use Vim/GVim? I'm not going to say that Vim/GVim is the only text editor anyone should use, but it's the one I prefer. Why do I prefer it? Simply because it offers sane defaults and keybindings that allow for very quick editing - without the need for a mouse. I find that keeping my hands on my keyboard actually allows for faster work than pausing to move the mouse (or keeping a hand on the mouse most of the time). If you find yourself nodding along with this, you should give Vim/GVim a shot. For example: Say you wanted to delete 250 sequential lines in some source code because you need to move the method elsewhere. In Vim you would simply type in 250 and then hit the “d” key twice (for delete line). If you then want to paste it somewhere else, simply move there and hit “p”. No need for a mouse or any highlighting whatsoever. How do you get around if you can't use a mouse? In GVim you are able to use a mouse, though it's really not necessary. In Vim you get around using page up/page down and the arrow keys (or hjkl where h=left, j=down, k=up, and l=right). What about syntax highlighting? Vim and GVim are fully customizable in a configuration file, and allows for custom colors and formatting for code according to file extensions. It also offers a very good syntax engine by default that simply needs to be enabled.

Pourquoi utiliser Vim/GVim ? Je ne vais pas dire que Vim/GVim est le seul éditeur de texte que quiconque devrait utiliser, mais c'est celui que je préfère. Pourquoi ? Tout simplement parce qu'il propose des trucs par défaut de bon sens et des raccourcis claviers qui permettent des modifications très rapides, sans devoir utiliser la souris. Je trouve que je travaille plus vite en gardant les mains sur le clavier au lieu de m'arrêter pour bouger la souris (ou de garder une main sur la souris la plupart du temps). Si vous apercevez que vous êtes en train d'opiner de la tête, vous devriez vraiment essayer Vim/GVim. Par exemple : Disons que vous voulez supprimer 250 lignes séquentielles dans du code source parce qu'il faut mettre la méthode à un autre endroit. Avec Vim, vous taperiez 250, puis frapperiez la touche « d » deux fois (pour supprimer - « delete » - ligne). Si, après vous voulez le coller ailleurs, allez à l'endroit voulu et frappez la touche « p » (pour coller - « paste »). Nul besoin d'une souris ni de mettre quoi que ce soit en surbrillance.

Comment s'y déplacer si vous n'utilisez pas de souris ? Dans GVim, l'utilisation de la souris est possible, mais n'est pas vraiment nécessaire. Dans Vim, vous vous déplacez avec Page Préc./ et Page Suiv. et les touches fléchées (ou hjkl, où h= à gauche, j = vers le bas, k = vers le haut et l = à droite). Quid de la coloration syntaxique ? Les deux, Vim et GVim, peuvent être complètement personnalisés dans un fichier de configuration.

What other useful features does it offer? It allows you to: • Set a custom size (number of spaces) for tab characters, which is useful when coding python. • Copy, paste, delete, and insert controls that allow for careful formatting (dw = delete word, dd=delete line, yw=copy word, yy=copy line, p=paste, etc). • Printing (with a sane printing default) • A tutorial that can be accessed with the command 'vimtutor' • Macros (easy creation and execution). Some basic commands: hjkl – movement ( h=left, j=down, k=up, and l=right) – this works only outside of any mode. Inside a mode you'll need to use the arrow keys. y – copy (yy = copy line) d – delete (dd = delete line) w -word (used in conjunction with y or d mainly) 1-∞<command> - repeat the command that number of times (i.e. 250dd = delete 250 lines starting at, and including, the line currently selected) :w – write (can be combined with q to write and quit)

Quelles autres fonctionnalités utiles propose-t-il ? Il vous permet de : * Personnaliser la taille (le nombre d'espaces) de votre tabulation, ce qui est utile pour coder en python. * Copier, coller, supprimer et insérer des contrôles qui permettent un formatage soigné (dw = supprimer mot), dd = supprimer ligne, yw = copier mot, yy = copier ligne, p = coller, etc.). * Imprimer (avec un défaut de bon sens). * Un tutoriel auquel vous pouvez accéder avec la commande « vimtutor ». * La création et l'exécution faciles de macros. Quelques commandes de base : hjkl - mouvement (h = à gauche, j = vers le bas, k = vers le haut et l = à droite) - cela ne fonctionne qu'en dehors de tout mode. Quand vous travaillez dans un mode quelconque, vous devrez utiliser les touches fléchées. y - copier (yy = copier la ligne) ; d - supprimer (dd = supprimer ligne) ; w - word (mot - utilisé pour la plupart du temps avec y ou d) ; 1-∞<command> - répéter la commande ce nombre de fois (c-à-d 250dd = supprimer 250 lignes commençant par, et y compris, la ligne actuellement sélectionnée) ; :w - « write » (enregistrer - peut être utilisé avec q pour enregistrer et quitter [Ndt :dans la version 7.2, c'est :wqa qu'il faut utiliser]) ;

:e – open ; :q – quit ; Esc – exit any mode ; i – insert mode (inserts before current selection) ; a – add mode r – replace mode u – undo ctrl+r – redo. p – paste anything copied or deleted in Vim/GVim :hardcopy – the command to print :%s/<regex>/<to replace>/ - allows you to substitute anything you search for in the first block with what is in the second block. This also accepts regular expressions. :set <option> - allows you to set an option for the running instance. See my configuration file for some examples of settings (which I set for any instance). ctrl+v – visual mode, allowing the highlighting of multiple lines inside visual mode: I – insert before all highlighted letters X – delete all highlighted letters *middle-mouse button (or shift + insert) paste from external linux clipboard after selecting the text to paste.*

:e - ouvrir ; :q - quitter [Ndt : dans la version 7.2, c'est :qa] ; Échap - sortir d'un mode ; i - mode insertion (sera inséré avant la sélection actuelle ; a - mode ajouter ; r - mode remplacer ; u - annuler ; ctrl+r - refaire [Ndt : dans la version 7.2, c'est ^R] ; p - coller tout ce qui a été copié ou supprimé dans Vim/GVim ; :hardcopy - Imprimer [Ndt : dans GVim en français, il y a une icône pour imprimer, ou Fichier > Imprimer ; :%s/<regex>/<à remplacer>/ - vous permet de replacer ce que vous cherchez dans le premier bloc avec ce qui se trouve dans le deuxième bloc. Ceci accepte aussi les expressions régulières ; :set <option> - vous permet de régler une option pour l'instance en cours. CF mon fichier de configuration pour quelques exemples de réglages (que je règle pour toute instance) ; ctrl+v - mode visuel, ce qui permet la mise en surbrillance de lignes multiples à l'intérieur du mode visuel : I - insérer avant toutes les lettres en surbrillance. X - supprimer toutes les lettres en surbrillance. *bouton du milieu de la souris (ou maj + insérer) pour coller à partir du presse-papiers linux externe après avoir sélectionné le texte à coller.*

This is just a basic list of commands I frequently use. The line marked with asterisks is actually a linux shortcut, but it's very useful in Vim/GVim. How do I use Vim/GVim? To open a file, you can either append the path after the Vim/GVim command, or open it using :e once it loads. Once you have opened the file that you want to edit, you can then hit “i” (the key on the keyboard) to enter insert mode. It will tell you what mode is active (blank means there is currently no mode being used) in the bottom-left corner. For the sake of this example, let us simply write “Com3mand 6 Conque”. Once you've entered the text, it's time to fix it up. Move to the 3 using the hjkl keys, and then hit the “x” key to delete it. Head over to the 6 and hit the “r” key, and then enter the ampersand (“&”). Once that's done, you should have: “Command & Conque”. Notice that the “r” is missing! Move the cursor over the e and you'll notice that you can't move the cursor past the already entered text. How do you enter the r then? You can either hit the “i” key for insert and move the cursor using the arrow keys and then enter it. Or, you could “append” the text using the “a” key, which moves the cursor to the space after the selected letter. Then type “r” and you're all set. If you want to save it, do so with :w (and if you haven't given it a path or name yet, you must do so after the w). If you want to just quit, use “:q” (in this case you'll need to add an exclamation point after the q to ignore the changes made). After the “:q!”, you will find yourself back at your desktop (from GVim) or in your terminal if you used Vim.

Ceci n'est qu'une liste de base des commandes que j'utilise fréquemment. La ligne délimitée par des astérisques est, en fait, un raccourci de linux, mais c'est très utile dans Vim/GVim.

Ma façon d'utiliser Vim/GVim? Pour ouvrir un fichier, vous pouvez soit en ajouter le chemin après la commande Vim/GVim, soit l'ouvrir, une fois chargé, avec :e. Une fois que vous avez ouvert le fichier que vous souhaitez modifier, vous pouvez frapper « i » (la touche sur le clavier) pour entrer en mode insertion. Dans le coin en bas à gauche, vous pourrez voir quel mode est activé (s'il n'y a rien, le « mode vierge » en quelque sorte, vous n'utilisez aucun mode pour le moment). Pour les besoins de cet exemple, nous allons écrire simplement « Com3mand 6 Conque ». Une fois le texte saisi, le moment est venu de le corriger. Allez jusqu'au 3 avec les touches hjkl et puis appuyez sur la touche « x » pour le supprimer. Allez jusqu'au 6 et appuyez sur la touche « r », puis tapez l'esperluette (« & »). Maintenant, vous devrez avoir : « Command & Conque ». Vous remarquerez qu'il manque le « r » ! Mettez le curseur sur le e et vous verrez que vous ne pouvez pas le bouger au-delà du texte déjà saisi. Alors, comment mettre le r ? Vous pouvez soit taper sur la touche « i » pour insertion et bouger le curseur avec les touches fléchées, puis mettre le r. Soit vous pouvez « ajouter » du texte avec la touche « a », ce qui positionne le curseur dans l'espace après la lettre sélectionnée. Tapez « r » et le tour est joué. Si vous voulez l'enregistrer, faites-le avec :w (et si vous ne lui avez pas encore donné un chemin ou un nom, il faut le faire après le w). Si vous voulez seulement quitter, utilisez «:q » (dans ce cas précis, vous devrez ajouter un point d'exclamation après le q pour ignorer les modifications que vous avez faites. Après le « :q! », vous serez de retour sur votre bureau (à partir de GVim) ou dans le terminal si vous avez utilisez Vim.

A few things to remember: The Vim shortcut keys that use letters (u, ctrl+r, y, d, w, etc) all require you to be in the “blank mode” (i.e. without any editing mode active). Otherwise, you'll just type the letter. Get in the habit of hitting escape after you've made a change so that you don't start typing in gibberish. Using numbers to repeat commands also works only outside of a mode. If, when pasting something, you find that it spaces it all out oddly, simply activate the past mode (:set paste) and when you're done, disable it with :set nopaste. If you want to copy something, and you find you copy the line numbers too, simply shut them off with :set nonumber, and back on with :set number. If you have any questions, or would like a follow up article with a step-by-step example, please let me know by emailing me at lswest34@gmail.com. If you do email me, please include C&C or FCM in the subject line, so I don't overlook it! Files: My .vimrc (I deleted some functions that require external software or are intended for use with Mutt, so it may result in one or two settings not working): http://pastebin.com/wv260CJk The colorscheme I use (see screenshot): http://dengmao.wordpress.com/20 07/01/22/vim-color-schemewombat/ Screenshot (full-size): http://lswest.deviantart.com/art/Screenshot-October-2011-262486679

Voici quelques points à ne pas oublier : Les raccourcis clavier de Vim qui utilisent des lettres (u, ctrl+r, y, d, w, etc.) nécessitent d'être dans le « mode vierge » (c'est-à-dire qu'aucun mode d'édition n'est activé). Sinon, vous taperiez tout simplement la lettre. Prenez l'habitude d'appuyer sur Échap après chaque modification pour que ce que vous écrivez ne devienne pas du charabia.

L'utilisation de nombres pour répéter des commandes fonctionne uniquement en dehors d'un mode aussi. Si, quand vous collez quelque chose, il s'espace de façon très bizarre, il suffit d'activer le mode coller (:set paste) et, quand vous avez terminé, de le désactiver avec :set nopaste.

Si vous voulez copier quelque chose et voyez que vous copiez également le nombre des lignes, il suffit de les désactiver avec :set nonumber et de les activer à nouveau avec :set number.

Si vous avez des questions ou aimeriez un deuxième article sur Vim avec un exemple étape par étape, veuillez me le faire savoir à lswest34@gmail.com. Et si vous m'envoyez un courriel, prière de mettre C&C ou FCM comme objet pour que je ne l'ignore pas !

Fichiers : Mon .vimrc (J'ai supprimé quelques fonctions qui nécessitent des logiciels externes ou sont, en principe, à utiliser avec Mutt ; il pourrait en résulter qu'un ou deux réglages ne fonctionnent pas) : http://pastebin.com/wv260CJk Les couleurs dont je me sers (voir la capture d'écran : http://dengmao.wordpress.com/20 07/01/22/vim-color-schemewombat/ Capture d'écran (plein écran): http://lswest.deviantart.com/art/Screenshot-October-2011-262486679

issue54/c_c.txt · Dernière modification : 2011/12/16 17:13 de amstram