Vimrc

From AleikoumWiki

(Difference between revisions)
Jump to: navigation, search
m
m
Line 11: Line 11:
"#########################################################################
"#########################################################################
-
" tres largement inspire de celui de J. T.
+
" tres largement inspire de celui de J. T. le pro du Web
-
 
+
" Configuration generale
" Configuration generale
Line 20: Line 19:
set number
set number
"set numberwidth=1
"set numberwidth=1
-
" Va chercher directement la pattern lors d'une recherche
+
" Va highlighter directement la pattern lors d'une recherche a la volee
set incsearch
set incsearch
 +
" Va highlighter les resultats d'une recherche
 +
set hlsearch
" Indentation automatique
" Indentation automatique
set autoindent
set autoindent
-
" Pour scroller avec la molette
+
" Pour la souris : en 'a' la souris permet de scroller
 +
" en 'h' la souris permet de selectionner
set mouse=a
set mouse=a
 +
" Option de collage
 +
set nopaste
" le J. T. official V!m status , laststatus permet d'afficher tout le temps la statusline
" le J. T. official V!m status , laststatus permet d'afficher tout le temps la statusline
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
Line 31: Line 35:
" Modification des tabs et des espaces
" Modification des tabs et des espaces
set softtabstop=4
set softtabstop=4
 +
set tabstop=4
set shiftwidth=4
set shiftwidth=4
set expandtab
set expandtab
Line 36: Line 41:
" Syntax enable
" Syntax enable
syntax on
syntax on
-
" Indique la parenthese qu'on ferme
+
 
 +
" La ligne sur laquelle le curseur se trouve est highlighte
 +
"set cursorline
 +
"highlight Cursorline term=reverse cterm=reverse
 +
 
set showmatch
set showmatch
-
" Permet d'avoir la liste des fichiers possible a ouvrir
 
-
" lorsqu on ouvre un fichier directement depuis V!m avec un :e
 
set wildmenu
set wildmenu
set wildignore=*.o,*#,*~,*.dll,*.so,*.a
set wildignore=*.o,*#,*~,*.dll,*.so,*.a
set wildmode=full
set wildmode=full
-
" Pour un affichage plus sain
+
set foldmethod=indent " A chaque indentation, un fold est cree
-
" A chaque indentation, un fold est cree
+
set fillchars=fold:-
-
" pour ouvrir un fold : fleche de droite
+
set foldtext=MyFoldDisplay()
-
" pour refermer un fold : <esc>zc
+
-
set foldmethod=indent
+
au BufWinLeave * mkview
au BufWinLeave * mkview
au BufWinEnter * silent loadview
au BufWinEnter * silent loadview
- 
" Shortcuts
" Shortcuts
Line 64: Line 68:
map! <F4> <esc><c-w><Down>
map! <F4> <esc><c-w><Down>
-
" Pour la souris : en 'a' la souris permet de scroller
+
" Changer dynamiquement la souris ainsi que le mode de copie
-
" en 'h' la souris permet de selectionner
+
map <F5> <esc>:call MouseManage()<CR>i
-
map <F5> <esc>:set mouse=h<CR>
+
map! <F5> <esc>:call MouseManage()<CR>i
-
map <F6> <esc>:set mouse=a<CR>
+
 
-
map! <F5> <esc>:set mouse=h<CR>
+
" Plus de numero ligne ou pas !
-
map! <F6> <esc>:set mouse=a<CR>
+
map <F6> <esc>:call NumLineManage()<CR>
 +
map! <F6> <esc>:call NumLineManage()<CR>
-
" Divers
 
" Gestion des buffers avec le vim *
" Gestion des buffers avec le vim *
-
" ouverture avec <esc>:bNUM
 
map <F7> <esc>:ls<CR>
map <F7> <esc>:ls<CR>
map! <F7> <esc>:ls<CR>
map! <F7> <esc>:ls<CR>
 +
" Ouvrir un nouveau fichier
" Ouvrir un nouveau fichier
map <F8> <esc>:e
map <F8> <esc>:e
map! <F8> <esc>:e
map! <F8> <esc>:e
 +
" Test si le script perl compile
" Test si le script perl compile
map <F9> <esc>:!perl -c %<CR>
map <F9> <esc>:!perl -c %<CR>
map! <F9> <esc>:!perl -c %<CR>
map! <F9> <esc>:!perl -c %<CR>
 +
" Fais un backup du fichier courant en .save
" Fais un backup du fichier courant en .save
map <F10> <esc>:w %.save<CR>
map <F10> <esc>:w %.save<CR>
map! <F10> <esc>:w %.save<CR>
map! <F10> <esc>:w %.save<CR>
 +
 +
" Indenter une ligne ou le texte complet
 +
map <F11> <esc>==<CR>
 +
map! <F11> <esc>==<CR>
 +
map <F12> <esc>gg=G<CR>
 +
map! <F12> <esc>gg=G<CR>
 +
 +
" Anciens Shortcuts
 +
" -----------------
 +
" avec la gestion de la souris
 +
"map <F5> <esc>:set mouse=h<CR>
 +
"map <F6> <esc>:set mouse=a<CR>
 +
"map! <F5> <esc>:set mouse=h<CR>
 +
"map! <F6> <esc>:set mouse=a<CR>
" F11 pour coller du texte formatte
" F11 pour coller du texte formatte
" et F12 pour revenir a l'etat initial
" et F12 pour revenir a l'etat initial
-
map <F11> <esc>:set paste<CR>
+
"map <F11> <esc>:set paste<CR>
-
map <F12> <esc>:set nopaste<CR>
+
"map <F12> <esc>:set nopaste<CR>
-
map! <F11> <esc>:set paste<CR>
+
"map! <F11> <esc>:set paste<CR>
-
map! <F12> <esc>:set nopaste<CR>
+
"map! <F12> <esc>:set nopaste<CR>
 +
 
 +
" Fonctions
 +
" ---------
 +
 
 +
" Fonction 1 : affichage divers
 +
function! s:DisplayStatus(msg)
 +
echohl Todo
 +
echo a:msg
 +
echohl None
 +
endfunction
 +
 
 +
" Fonction 2 : activation/desactivation de la gestion de la souris
 +
let s:mouseActivation = 1
 +
function! MouseManage()
 +
if (s:mouseActivation)
 +
let s:mouseActivation = 0
 +
set mouse=n
 +
set paste
 +
call s:DisplayStatus('mouse desactivee + possibilite de coller du texte deja formatte')
 +
else
 +
let s:mouseActivation = 1
 +
set mouse=a
 +
set nopaste
 +
call s:DisplayStatus('mouse activee + collage avec gestion de l autoindent')
 +
endif
 +
endfunction
 +
 
 +
" Fonction 3 : modification du texte dans les folds
 +
function! MyFoldDisplay()
 +
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
 +
 
 +
" Fonction 4 : numero de lignes ou pas ?
 +
let s:numlineActivation = 1
 +
function! NumLineManage()
 +
if (s:numlineActivation)
 +
set nonu
 +
let s:numlineActivation = 0
 +
else
 +
set number
 +
let s:numlineActivation = 1
 +
endif
 +
endfunction
</pre>
</pre>

Revision as of 16:04, 5 November 2008

V!m tel quel est assez lourd à utiliser, alors voici un petit .vimrc toujours à coller dans votre home ! Bien entendu je remercie une fois de plus le pro du Web - un certain J. T. - pour m'avoir initie a l'univers et a la configuration V!m !

"#########################################################################
"#                                                                       #
"#               Mon ~/.vimrc par Erwan Laby Ben Souiden                 #
"#               ---------------------------------------                 #
"#                                                                       #
"#last MAJ : 2008-10-28 10:27                                            #
"#e.bensouiden@gmail.com                                                 #
"#########################################################################

" tres largement inspire de celui de J. T. le pro du Web

" Configuration generale
" ----------------------

" Affiche les numeros de lignes, set nonu pour les retirer
set number
"set numberwidth=1
" Va highlighter directement la pattern lors d'une recherche a la volee
set incsearch
" Va highlighter les resultats d'une recherche
set hlsearch
" Indentation automatique
set autoindent
" Pour la souris : en 'a' la souris permet de scroller
" en 'h' la souris permet de selectionner
set mouse=a
" Option de collage
set nopaste
" le J. T. official V!m status , laststatus permet d'afficher tout le temps la statusline
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
set laststatus=2
" Modification des tabs et des espaces
set softtabstop=4
set tabstop=4
set shiftwidth=4
set expandtab
set ttymouse=xterm2
" Syntax enable
syntax on

" La ligne sur laquelle le curseur se trouve est highlighte
"set cursorline
"highlight Cursorline term=reverse cterm=reverse

set showmatch
set wildmenu
set wildignore=*.o,*#,*~,*.dll,*.so,*.a
set wildmode=full

set foldmethod=indent " A chaque indentation, un fold est cree
set fillchars=fold:-
set foldtext=MyFoldDisplay()
au BufWinLeave * mkview
au BufWinEnter * silent loadview

" Shortcuts
" ---------

" Diviser le buffer actuel puis switcher entre les buffers
map <F2> <esc><c-w>s
map <F3> <esc><c-w><Up>
map <F4> <esc><c-w><Down>
map! <F2> <esc><c-w>s
map! <F3> <esc><c-w><Up>
map! <F4> <esc><c-w><Down>

" Changer dynamiquement la souris ainsi que le mode de copie
map <F5> <esc>:call MouseManage()<CR>i
map! <F5> <esc>:call MouseManage()<CR>i

" Plus de numero ligne ou pas !
map <F6> <esc>:call NumLineManage()<CR>
map! <F6> <esc>:call NumLineManage()<CR>

" Gestion des buffers avec le vim *
map <F7> <esc>:ls<CR>
map! <F7> <esc>:ls<CR>

" Ouvrir un nouveau fichier
map <F8> <esc>:e
map! <F8> <esc>:e

" Test si le script perl compile
map <F9> <esc>:!perl -c %<CR>
map! <F9> <esc>:!perl -c %<CR>

" Fais un backup du fichier courant en .save
map <F10> <esc>:w %.save<CR>
map! <F10> <esc>:w %.save<CR>

" Indenter une ligne ou le texte complet
map <F11> <esc>==<CR>
map! <F11> <esc>==<CR>
map <F12> <esc>gg=G<CR>
map! <F12> <esc>gg=G<CR>

" Anciens Shortcuts
" -----------------
" avec la gestion de la souris
"map <F5> <esc>:set mouse=h<CR>
"map <F6> <esc>:set mouse=a<CR>
"map! <F5> <esc>:set mouse=h<CR>
"map! <F6> <esc>:set mouse=a<CR>
" F11 pour coller du texte formatte
" et F12 pour revenir a l'etat initial
"map <F11> <esc>:set paste<CR>
"map <F12> <esc>:set nopaste<CR>
"map! <F11> <esc>:set paste<CR>
"map! <F12> <esc>:set nopaste<CR>

" Fonctions
" ---------

" Fonction 1 : affichage divers
function! s:DisplayStatus(msg)
    echohl Todo
    echo a:msg
    echohl None
endfunction

" Fonction 2 : activation/desactivation de la gestion de la souris
let s:mouseActivation = 1
function! MouseManage()
    if (s:mouseActivation)
        let s:mouseActivation = 0
        set mouse=n
        set paste
        call s:DisplayStatus('mouse desactivee + possibilite de coller du texte deja formatte')
    else
        let s:mouseActivation = 1
        set mouse=a
        set nopaste
        call s:DisplayStatus('mouse activee + collage avec gestion de l autoindent')
    endif
endfunction

" Fonction 3 : modification du texte dans les folds
function! MyFoldDisplay()
    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

" Fonction 4 : numero de lignes ou pas ?
let s:numlineActivation = 1
function! NumLineManage()
    if (s:numlineActivation)
        set nonu
        let s:numlineActivation = 0
    else
        set number
        let s:numlineActivation = 1
    endif
endfunction

Quelques memo pour V!m :

<esc>K : permet d'afficher le man de la commande sur laquelle se trouve le pointeur
<esc>:! commande : execute "commande" dans le terminal
yy : copie la ligne sur laquelle se trouve le pointeur
yNUMy : copie les NUM lignes a partie de laquelle se trouve le pointeur
dd : coupe la ligne sur laquelle se trouve le pointeur
dNUMd : coupe les NUM lignes a partie de laquelle se trouve le pointeur
p : colle les lignes copiees
<shift>C : efface tout entre le pointeur et la fin de la ligne + passe en mode insertion
<esc>:r!which commande : affiche le chemin vers l exec commande sur la ligne ou se trouve le curseur


Quelques colorscheme sympas :
Les schemes doivent se trouver dans ~/.vim/colors/ et doivent posseder l'extension .vim

Pour changer de colorscheme il suffit de faire
<esc>colorscheme nom-scheme-sans-ext

http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/midnight2.vim : pour perl

Personal tools