Vimrc
From AleikoumWiki
(Difference between revisions)
m |
|||
(10 intermediate revisions not shown.) | |||
Line 7: | Line 7: | ||
"# --------------------------------------- # | "# --------------------------------------- # | ||
"# # | "# # | ||
- | "#last MAJ : | + | "#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 | + | " 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 | + | " 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 | ||
- | " | + | |
+ | " 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 | |
- | " A chaque indentation, un fold est cree | + | set fillchars=fold:- |
- | + | set foldtext=MyFoldDisplay() | |
- | + | ||
- | set | + | |
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> | ||
- | " | + | " Changer dynamiquement la souris ainsi que le mode de copie |
- | + | map <F5> <esc>:call MouseManage()<CR>i | |
- | map <F5> <esc>: | + | map! <F5> <esc>:call MouseManage()<CR>i |
- | map < | + | |
- | map | + | " Plus de numero ligne ou pas ! |
- | map! <F6> <esc>: | + | 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 | + | |
- | map <F10> <esc>: | + | " Fais un backup |
- | map! <F10> <esc>: | + | 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 104: | Line 185: | ||
<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>: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> | ||
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
<esc>colorscheme nom-scheme-sans-ext
http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/midnight2.vim : pour perl