Vim : Les indispendables & Quick Reference Card

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Références

Voici quelques petites commandes bien pratiques dont je ne me rappelle pas toujours :

Remplacer du texte dans la ligne en cours :

:s/orgine/dest/g

Remplacer du texte dans tout le document :

:%s/orgine/dest/g

Supprimer les espaces et tabulations supperflues à la fin des lignes :

:%s/\s\+$//

Voici également le Quick Reference Card et la même chose mais en Français :-).

2 Les fonctions

Voici ce qui est pour moi indispensable dans VIM pour une bonne édition de fichiers et une meilleure navigation :

Configuration File ~/.vimrc
" /etc/vim/vimrc, ~/.vimrc ou ~/.exrc
" VIM Configuration File
 
" Made by Pierre Mavro
" Version 0.3
 
" Affiche la paire de parenthèses
set showmatch
" Numerote les lignes
set number
" Essaye de garder le curseur dans la même colonne quand on change de ligne
set nostartofline
" Option de la complétion automatique
set wildmode=list:full
" Garde toujours une ligne visible à l'écran au dessus du curseur
set scrolloff=1
" Encoding Euro avec accents
set enc=UTF-8
" Police de caractère pour Gvim qui supporte le symbole euro
set guifont=-misc-fixed-medium-r-semicondensed-*-*-111-75-75-c-*-iso8859-15
" Active la coloration syntaxique
syntax on
" Utiliser le jeu de couleurs standard
colorscheme default
" Affiche la position du curseur 'ligne,colonne'
set ruler
" Les recherches ne sont pas 'case sensitives'
set ignorecase
" Mettre en surligné les expressions recherchées
set hlsearch
 
" Tabulation section
set autoindent
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4
 
" Message function
function! s:DisplayStatus(msg)
    echohl Todo
    echo a:msg
    echohl None
endfunction
 
" Mouse state mode
let s:mouseActivation = 1 
" Activating / Desactivating mouse mode
function! ToogleMouseActivation()
    if (s:mouseActivation)
        let s:mouseActivation = 0 
        set mouse=n
        set paste
        call s:DisplayStatus('Paste Mode Desactivated')
    else
        let s:mouseActivation = 1 
        set mouse=a
        set nopaste
        call s:DisplayStatus('Paste Mode Activated')
    endif
endfunction
" Activating mouse mode by default
" set mouse=a
set paste
 
" Cleaning function
" Call this function : ':call Clean()'
function! Clean()
    %retab
    %s/^M//g
    %s/\s\+$//
    call s:DisplayStatus('Code cleaned')
endfunction
 
" Advanced completion
" Use : 'Ctrl+x & Ctrl+o | Ctrl+x & Ctrl+k | Ctrl+x & Ctrl+n'
function! MultipleAutoCompletion()
    if &omnifunc != ''
        return "\<C-x>\<C-o>"
    elseif &dictionary != ''
        return "\<C-x>\<C-k>"
    else
        return "\<C-x>\<C-n>"
    endif
endfunction
 
" Fold function
function! MyFoldFunction()
    let line = getline(v:foldstart)
    let sub = substitute(line, '/\*\|\*/\|^\s+', '', 'g')
    let lines = v:foldend - v:foldstart + 1
    return '[+] '. v:folddashes.sub . '...' . lines . 'lines...' .
    getline(v:foldend)
endfunction
" Activate Fold function
" Use : za (open or close), zm (close all) or zr (close zr)
set foldenable
set fillchars=fold:=
set foldtext=MyFoldFunction()
 
" Comment / Uncomment with # or //
" Use : Shift+v, select wished lines and press F5 or F6
map <F5> :s.^.#. <CR> :noh <CR>
map <F6> :s.^#.. <CR> :noh <CR>
" Use : Shift+v, select wished lines and press F7 or F8
map <F7> :s.^.\/\/. <CR> :noh <CR>
map <F8> :s.^\/\/.. <CR> :noh <CR>
 
" Indent or not from 4 spaces
" Use : Shift+v, select wished lines and press F3 or F4
map <F3> :s.^    .. <CR> :noh <CR>
map <F4> :s.^.    . <CR> :noh <CR>

Ceci est donc à mettre dans "~/.exrc". Vous aurez alors l’auto-indentation, la numérotation des lignes etc...

Si vous souhaitez avoir la dernière version en date de mon vimrc, allez sur mon git : http://www.deimos.fr/gitweb

3 Ressources

http://vimcasts.org/
http://vim-adventures.com/
Générateur de configuration VIM
Quick Reference Card
Quick Reference Card (Français)
The new and improved Vim editor