#1 Le 04/07/2006, à 15:20
- pabix
[HowTo] Complétion automatique sous vim
Voici un petit script splendide pour avoir la complétion et l'indentation automatiques sous vim avec la touche TAB, activer la numérotation des lignes, l'indentation automatique et la coloration syntaxique.
À enregistrer dans le fichier .vimrc dans votre répertoire de connexion !
Benoit
"Numérotation automatique
set nu
"Indentation automatique
set autoindent
"Coloration syntaxique
syntax on
"Remplacement des tabulations par 4 espaces dans les fichiers PHP
au FileType php set et sts=4 sw=4
" Touche TAB améliorée
vmap <tab> >gv
vmap <bs> <gv
function! TabAlign()
" Cette fonction, lorsqu'aucun mot n'est tapé, cherche à recopier le dernier caractère de la ligne d'avant
" Idéal pour aligner des backslash avant des retour à la ligne
let col = col('.')
let lnum = line('.')
" recherche de la première ligne ayant une longueur supérieure à la ligne courante
while lnum > 1 " chercher la ligne
let lnum = lnum - 1
let ln = strpart(getline(lnum), col-1)
let ms = matchstr(ln, '[^ ]* *[^ ]')
if ms != ""
break
endif
endwhile
if lnum == 1
return "\<Tab>"
else
" Copie dans le registre z du dernier caractère de la ligne de longueur supérieure trouvée
let @z = substitute(strpart(ms, 0, strlen(ms)-1), '.', ' ', 'g')
" Si au dernier caractère de la ligne :
if col > strlen(getline('.'))
" Copie du registre z après le caractère courant (CTRL-O échappe du mode insertion pour une instruction)
return "\<C-O>\"zp"
else
" Copie du registre z avant le caractère courant (idem)
return "\<C-O>\"zP"
endif
endif
endfunction
function! CleverTab()
let c = strpart(getline('.'), col('.')-2, 1)
" Si aucun mot n'a été partiellement saisi
if c == ' ' || c == '\t' || c == ''
" Utiliser la fonction précédente
return TabAlign()
" Sinon
else
" Complétion automatique
return "\<C-P>"
endif
endfunction
inoremap <Tab> <C-R>=CleverTab()<CR>
inoremap <S-Tab> <C-R>=TabAlign()<CR>
Dernière modification par pabix (Le 07/12/2006, à 11:04)
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#2 Le 05/07/2006, à 03:37
- kikdijon
Re : [HowTo] Complétion automatique sous vim
ou si on ne veut pas sacrifier la touche de tabulation, on peut aussi utiliser ctrl + n, pour la completion automatique
blog : http://blog.olivier-elmekki.com
site professionnel : http://olivier-elmekki.com
Hors ligne
#3 Le 05/07/2006, à 08:33
- pabix
Re : [HowTo] Complétion automatique sous vim
tout à fait, ou Ctrl-P (sens inverse)
Benoit
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#4 Le 07/12/2006, à 10:46
- Cube
Re : [HowTo] Complétion automatique sous vim
Salut
Pourrais-tu commenter les deux fonctions du script ? Car j'aimerais en modifier le comportement mais je ne connais le langage de Vim.
Hors ligne
#5 Le 07/12/2006, à 10:53
- pabix
Re : [HowTo] Complétion automatique sous vim
Voilà !
PS. C'est pas de moi, le script, et je ne connais pas vraiment le langage de macro de vim, mais on peut le comprendre. Il y a une grande, grande fonction qui ne sert presque pas. La grande ligne, la principale est « return "\<C-P>" »
Benoit
Dernière modification par pabix (Le 07/12/2006, à 11:05)
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne