Vimrc

From AleikoumWiki

(Difference between revisions)
Jump to: navigation, search
m
Current revision (12:01, 29 July 2010) (edit) (undo)
 
(19 intermediate revisions not shown.)
Line 7: Line 7:
"# --------------------------------------- #
"# --------------------------------------- #
"# #
"# #
-
"#last MAJ : 2008-10-28 10:27 #
+
"#last MAJ : 2009-02-20 11:02 #
"#e.bensouiden@gmail.com #
"#e.bensouiden@gmail.com #
"#########################################################################
"#########################################################################
-
" 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
-
" le J. T. official V!m status , laststatus permet d'afficher tout le temps la statusline
+
" Option de collage
-
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
+
set nopaste
 +
" le J. T. official V!m status modifiee par mes soins , 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]\ [LASTMODIFIED=%{FileTime()}]
set laststatus=2
set laststatus=2
" 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
-
 
+
set foldmethod=indent " A chaque indentation, un fold est cree
-
 
+
set fillchars=fold:-
 +
set foldtext=MyFoldDisplay()
 +
au BufWinLeave * mkview
 +
au BufWinEnter * silent loadview
" Shortcuts
" Shortcuts
" ---------
" ---------
 +
" Diviser le buffer actuel puis switcher entre les buffers
" Diviser le buffer actuel puis switcher entre les buffers
map <F2> <esc><c-w>s
map <F2> <esc><c-w>s
Line 57: 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
+
 
-
map <F10> <esc>:w %.save<CR>
+
" Fais un backup
-
map! <F10> <esc>:w %.save<CR>
+
map <F10> <esc>:call SaveAndDate()<CR>
 +
map! <F10> <esc>:call SaveAndDate()<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>
 +
"map <F10> <esc>:w %.save<CR>
 +
"map! <F10> <esc>:w %.save<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
 +
 
 +
" Fonction 5 : recuperer le dernier lastmodified du fichier courant
 +
function! FileTime()
 +
let filename=expand("%:p")
 +
let msg=strftime("%Y/%m/%d-%H:%M:%S",getftime(filename))
 +
return msg
 +
endf
 +
 
 +
" Fonction 6 : fait une sauvegarde du fichier courant en .$date
 +
function! SaveAndDate()
 +
let thedate=strftime("%Y%m%d-%H%M%S")
 +
exec 'w %.'.thedate
 +
endf
</pre>
</pre>
Line 91: Line 179:
<esc>:! commande : execute "commande" dans le terminal
<esc>:! commande : execute "commande" dans le terminal
yy : copie la ligne sur laquelle se trouve le pointeur
yy : copie la ligne sur laquelle se trouve le pointeur
-
NUMyy : copie les NUM lignes a partie de 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
dd : coupe la ligne sur laquelle se trouve le pointeur
-
NUMdd : coupe les NUM lignes a partie de laquelle se trouve le pointeur
+
dNUMd : coupe les NUM lignes a partie de laquelle se trouve le pointeur
p : colle les lignes copiees
p : colle les lignes copiees
<shift>C : efface tout entre le pointeur et la fin de la ligne + passe en mode insertion
<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
 +
<esc>gg : va au debut du fichier
 +
<esc>G : va a la fin du fichier
 +
zc : replie le fold courant
 +
zo : deplie le fold courant
 +
<esc>gg=G : indente tout le texte
 +
<esc>:24,67= : indente entre la ligne 24 et 67
 +
<esc>:1,3s/^/# /g : commente la ligne 1 a 3
 +
<esc>:.,$s/^/# /g : commente de la ligne courante a la fin
</pre>
</pre>
 +
 +
 +
Quelques colorscheme sympas :<br/>
 +
Les schemes doivent se trouver dans ~/.vim/colors/ et doivent posseder l'extension .vim<br/>
 +
Pour changer de colorscheme il suffit de faire <pre><esc>colorscheme nom-scheme-sans-ext</pre>
 +
http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/midnight2.vim : pour perl

Current revision

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 : 2009-02-20 11:02                                            #
"#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 modifiee par mes soins , 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]\ [LASTMODIFIED=%{FileTime()}]
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
map <F10> <esc>:call SaveAndDate()<CR>
map! <F10> <esc>:call SaveAndDate()<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>
"map <F10> <esc>:w %.save<CR>
"map! <F10> <esc>:w %.save<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

" Fonction 5 : recuperer le dernier lastmodified du fichier courant
function! FileTime()
    let filename=expand("%:p")
    let msg=strftime("%Y/%m/%d-%H:%M:%S",getftime(filename))
    return msg
endf

" Fonction 6 : fait une sauvegarde du fichier courant en .$date
function! SaveAndDate()
    let thedate=strftime("%Y%m%d-%H%M%S")
    exec 'w %.'.thedate
endf 

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
<esc>gg : va au debut du fichier
<esc>G : va a la fin du fichier
zc : replie le fold courant
zo : deplie le fold courant
<esc>gg=G : indente tout le texte
<esc>:24,67= : indente entre la ligne 24 et 67
<esc>:1,3s/^/# /g : commente la ligne 1 a 3
<esc>:.,$s/^/# /g : commente de la ligne courante a la fin


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