• [^] # Re: En vrac, mes préférés

    Posté par . En réponse à la dépêche Vim fête son 20e anniversaire. Évalué à 9.

    Ce qui est sympa avec vim, c'est la façon dont les choses se combinent entre-elles et de façon assez intuitive. Si tu sais comment faire un marqueur et comment effacer du texte, tu sais naturellement comment effacer du texte jusqu'au marqueur.

    Il n'y a pas très longtemps que j'utilise vim, mais voilà ma cheat sheet perso qui a encore besoin d'être complétée mais qui contient déjà pas mal de trucs bien pratiques :

    Invocation :
    vim
    vim file
    vim file1 file2
    commande | vim -
    view #mode lecture seule
    vimdiff file1 file2 #mode merge
    Ouvrir/sauver/quitter :
    :w - sauve le fichier courant
    :q - quitte
    :q! - force quitte
    :wq - sauve et quitte
    :e file - ouvrir "file" dans un nouveau buffer
    :bn - passe au buffer suivant
    :bp - passe au buffer précédent
    :wn - sauvegarde et passe au buffer suivant
    Modes :
    Vim est un éditeur modal, il y a donc différents modes
    ESC - quitte le mode en cours
    Mode insertion (édition) :
    (i = insert, a = append, o = open)
    i - insère avant le curseur
    a - insère après le curseur
    I - insère au début de la ligne
    A - insère à la fin de la ligne
    o - ouvre une nouvelle ligne sous la ligne en cours
    O - ouvre une nouvelle ligne au-dessus de la ligne en cours
    ctrl-p - propose l'auto-complétion du mot en cours à partir des mots du document
    ctrl-x - propose l'auto-complétion du mot en cours à partir des mots du dictionnaire
    Mode visuel (sélection) :
    v - passe en mode visuel (sélection)
    V - passe en mode visuel lignes (sélection de lignes)
    ctrl-v - passe en mode visuel bloc (sélection d'un cadre de texte)
    > - indenter la sélection
    < - désindenter la sélection
    = - indentation automatique de la sélection
    Déplacement :
    0 - début de ligne
    ^ - premier caractère significatif de la ligne
    $ - fin de ligne
    G - fin de fichier
    :n - aller à la ligne n
    Un chiffre devant une action du curseur répète l'action, par exemple 5 suivit de flèche vers le bas descend de cinq lignes.
    Recherche :
    /pattern - cherche "pattern" vers l'avant
    ?pattern - cherche "pattern" vers l'arrière
    * - cherche le mot actuellement sous le curseur
    n - continue la recherche vers l'avant
    N - continue la recherche vers l'arrière
    Rechercher/remplacer :
    Vim accepte en gros les mêmes expressions que sed :
    :%s/search/replace/ - remplace toutes les occurences du fichier
    :%s/search/replace/c - idem mais demande confirmation
    :'<,'>s/search/replace/ - remplace toutes les occurences du début à la fin de la sélection
    Exemples :
    indenter les lignes commençant par foo avec des tabulations :
    :%s/^foo/\t/
    commenter la sélection avec des # :
    sélectionner des lignes de texte avec V puis :
    :'<,'>s/^/#/
    supprimer les retours chariot pour convertir les sauts de ligne CRLF ("DOS") en sauts de ligne LF ("Unix") :
    :%s/\r//
    Couper/Copier/Coller :
    (d = delete, y = yank, p = paste)
    d - coupe la sélection
    dw - coupe un mot
    dd - coupe la ligne courante
    y - copie la sélection
    yw - copie un mot
    yy - copie la ligne courante
    p - colle après le curseur
    P - colle avant le curseur
    (remplace la sélection si on est en mode visuel)
    Ces actions peuvent être précédées d'un nombre et suivies d'un indicateur tel que 0, ^, $...
    Exemples:
    5dd - coupe 5 lignes
    d$ - coupe jusqu'à la fin de la ligne
    dG - coupe jusqu'à la fin du fichier
    3yw - copie 3 mots
    y0 - copie jusqu'au début de la ligne
    2p - colle deux fois
    Marqueurs :
    Les marqueurs sont en gros un système de favoris à l'intérieur du document, pratique pour se déplacer dans les grands fichiers
    mz - crée un marqueur "z" à la ligne courante
    'z - va jusqu'au marqueur "z"
    Les marqueurs peuvent être combinés avec d'autres commandes :
    d'z - coupe jusqu'au marqueur "z"
    y'z - copie jusqu'au marqueur "z"
    Autres commandes de base :
    :!foo - exécute la commande externe "foo" et en affiche la sortie
    u - (undo) annule la dernière opération
    ctrl-r - (redo) rejoue la commande annulée
    . - rejoue la dernière opérationn
    Configuration :
    Vim est configurable via des variables
    :set - montrer les valeurs qui diffèrent de la configuration par défaut
    :set all - montrer toutes les valeurs
    :set foo? - montre la valeur de foo
    :set foo - active foo 
    :set foo=bar - assigne la valeur bar à foo
    On peut mettre les variables dans ~/.vimrc pour une configuration persistente (dans ce cas, ne pas mettre le ':' devant set)
    Variables utiles :
    :set number - active la numérotation des lignes
    :set dictionary=/usr/share/dict/words - dictionnaire, pour l'auto-complétion et la vérification orthographique
    Plus d'infos :
    :help
    http://www.worldtimzone.com/res/vi.html
    http://www.cs.swarthmore.edu/help/vim/home.html
    http://vim.wikia.com
    http://arstechnica.com/open-source/guides/2009/05/vim-made-easy-how-to-get-your-favorite-ide-features-in-vim.ars
    
    

    Et mon .vimrc :

    set nocompatible
    set backupdir=~/.cache/vim
    set smartcase
    set hlsearch
    " set number
    syntax on
    filetype plugin on
    " remember last position
    autocmd BufReadPost *
     \ if line("'\"") > 0 && line("'\"") <= line("$") |
     \ exe "normal! g`\"" |
     \ endif
    
    

    Pour les utilisateurs de vim sous bash :
    echo "set -o vi" >> ~/.bashrc
    et les commandes vi deviennent utilisables sous bash (par défaut en mode emacs) !