Wiki ~ namok.be

La base

Pour éditer un fichier texte existant ou créer un nouveau fichier texte, il suffit de taper :

 $ vim monJoliFichier

Il existe 3 modes de fonctionnement sous vim:

  • Le mode Normal, dans lequel vous vous trouvez quand vous ouvrez vim. Dans ce mode, vous pouvez taper des commandes comme celles qui suivent. Si vous êtes dans un autre mode et que vous voulez revenir au mode commande, tapez Esc.
    • Exemples de commandes
      • /mot_clef pour faire rechercher un mot (n pour passer à l'itération suivante),
      • y nombre_de_lignes y (sans espace) pour copier ce nombre de ligne à partir du curseur (yy pour copier une ligne ou un groupe de mots en mode visuel),
      • d nombre_de_lignes d (sans espace) pour couper ce nombre de ligne à partir du curseur (dd pour couper une ligne en mode commande ou un groupe de mots en mode visuel),
      • p pour coller après le curseur,
      • u pour annuler la dernière modification. Vous pouvez appuyer plusieurs fois sur u pour annuler les dernières modifications.
      • Ctrl-r pour annuler la dernière annulation. Vous pouvez renouveler la combinaison de touches pour annuler les annulations antérieures.
  • Le mode Edition auquel on accède par la touche i (insert)ou a(append). L'indicateur INSERT apparaît alors en bas de l'écran. Dans ce mode, vous insérez du texte classiquement.
  • Le mode Command, qui permet d'entrer d'autres types de commandes, on y accède à partir du mode Normal en entrant :
    • Voici une liste des commandes les plus utilisées. Il faut bien entendu être en mode Commande pour les taper :
      • :h pour accéder à l'aide,
      • :w pour enregistrer,
      • :w nom_du_fichier pour faire enregistrer-sous nom_du_fichier,
      • :q pour quitter,
      • :wq pour enregistrer et quitter,
      • :q! pour quitter sans enregistrer les modifications,
      • :r pour inclure le contenu d'un autre fichier,
      • :numéro_de_ligne pour aller directement à cette ligne,
      • :%s/toto/tata/g pour remplacer toutes les occurrences de la chaîne de caractères toto par la chaîne de caractère tata.

L'aide

Il vous suffit d'entrer la commande :help pour y avoir accès. Il n'est pas facile de s'y retrouver au début. Vous trouverez une partie de l'aide de VIm en français ici.

Tips and tricks (trucs et astuces)

  • Substitution
    • :s/ancien/nouveau/g
    • :#,#s/ancien/nouveau (où #=numero de ligne)
    • :%s/ancien/nouveau/g
  • Position
    • Ctrl-G affiche la position
    • Maj-G goto fin
    • <numero> Maj-G goto la ligne <numero>
  • HTML
    • Avec cette commande remplace balise par <balise></balise> … wouah. :imap <F8> <Esc>diwi«C-R>“></<C-R>”><Esc>T>i
    • Produire un fichier html en couleur suivant la syntaxe;
  vim +f + "syntax on" + "so /usr/share/vim/syntax/2html.vim" + "wq" + "q" <nom fichier>
  • Ca marche pas très bien … par contre, éditer le fichier avec vim et ensuite entrer la commande qui marche bcp mieux.
so /usr/share/vim/syntax/2html.vim
  • Indentation
    • == indente une ligne
    • =% indente un bloc
    • gg=G indente le fichier entier
  • Autocomplétion Ctrl n
  • Recherche
    • Ctrl* un mot identique à celui ss le curseur
    • % balancement des parenthèses
  • Surbrillance
    • Désactive complètement la surbrillance des mots recherchés.
set nohlsearch
  • :r! <command> permet d'obtenir le résultat d'une commande.
  • Network
    • Nread ftp:<host>/<répertoire(s)>/<fichier> permet de lire “à distance” * Nwrite ftp:<host>/<répertoire(s)>/<fichier> permet d'écrire le fichier.
    • Le fichier est sauvegardé de manière temporaire localement. On peut donc faire des :w au lieu de faire à chaque fois un Nwrite.
      • Le couple login/passwd est demandé une fois au début … ensuite plus.
  • dos vs unix
    • :set ff=unix
    • :set ff=dos
  • Programmation
    • Some people have a habit of adding the function name as a comment to the end of that function, if it is long, so that he/she knows which function the '}' ends. Here's a way to automate the process. If you now end the function with '}', the follwoing string will be automatically generated: '} END: functionname'. Use the following abbreviation:
iab }// } // END: <esc>10h%$?\w\+\s*(<cr>"xy/\s*(<cr>/{<cr>:nohl<cr>%$"xpa
  • Les ''abréviations'. Il est facile de remplacer des chaines par d'autres … par exemple
    • abbr sout System.out.println(“
    • abbr serr System.err.println(”
    • abbr _scanner import java.util.Scanner ;
    • abbr _class public class <esc>:r!echo %:r<cr><up>A<del><end> { <cr>
    • abbr _main public static void main ( String[] args ) {
  • File type
    • Positionner le file type pour certains fichiers. Exemples
      • au BufNewFile?,BufRead? *.html.?? set ft=html “ HTML ; .html.fr for instance
      • au BufNewFile?,BufRead? *.tmpl set ft=html ” HTML .tmpl for templeet
  • Mettre un bloc en commentaires (ça ça faisait longtemps que je cherchais)
    • vmap ;c <ESC>`<i/*<ESC>`>a*/<ESC> (pour le C et autres)
    • vmap ;j <ESC>`<i/**<ESC>`>a*/<ESC> (pour la doc Java)

Les références

Le site

Evidement http://www.vim.org

Le livre

Il existe un livre très bien fait, écrit par Steve Oualline. Ce livre est disponible à la bibliothèque de l'école.

Liens

  • Aide en français, vim.dindinx.net > [html]
  • Mon fichier vimrc > [txt]
  • Introduction de Marc Simon (1999) > [html]