Sommaire Introduction ´El´ements param´etrables Liens...
Transcript of Sommaire Introduction ´El´ements param´etrables Liens...
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Vimet sa parametrisation
Luc Hermitte, <[email protected]>
Pour le Club des Utilisateurs du Libre de Toulouse et des environs
11 Septembre 2004
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Licence
Copyright c©2004 Luc Hermitte.Permission est accordee de copier, distribuer et/ou modifier cedocument selon les termes de la Licence de Documentation LibreGNU (GNU Free Documentation License), version 1.2 ou touteversion ulterieure publiee par la Free Software Foundation ; sansSections Invariables ; sans Textes de Premiere de Couverture, etsans Textes de Quatrieme de Couverture. Une copie de la presenteLicence est incluse dans la section intitulee « Licence deDocumentation Libre GNU ».
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Sommaire
1 IntroductionLes chemins
2 Elements parametrables.vimrcOptionsAbreviationsMappingsCommandes
3 ScriptsLe VimLLes PluginsLes FTPluginsLe reste
4 Liens utiles
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Les chemins
Introduction
Editeur de texte . . .
. . . modal (normal, insertion, commande, visuel, . . . )
Aide -> |:help|
Version 6+
Configuration
Extension
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Les chemins
Les chemins de Vim
$VIM
$VIMRUNTIME (/usr/share/vim/ ou $VIM/vim{version})
|’runtimepath’|$HOME/.vim/ : personnel$VIM/vimfiles/ : partage$VIMRUNTIME/ : partage$VIM/vimfiles/after/ : partage charge a la fin$HOME/.vim/after/ : personnel, dernieres choses chargees
Tous ces repertoires sont structures de la meme facon (plugin,syntax, ftplugin, colors, indent, doc, . . . ).
|:runtime| sert a charger dans l’ordre les divers scripts quireglent le comportement de Vim.
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
.vimrcOptionsAbreviationsMappingsCommandes
.vimrc|vimrc|
Premier fichier de configuration charge
Depuis Vim 6.0, et ses ftplugins, il est plus facile a maintenir
Il reste l’endroit privilegie ou se reglent les options de Vim quel’on veut communes a tous les types de fichiers edites, etl’endroit ou l’on peut configurer des plugins.
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
.vimrcOptionsAbreviationsMappingsCommandes
.vimrc - Diverses Definitions I
Extraits
if has("autocmd")filetype plugin indent on
endif
noremap Y y$vnoremap <BS> d " BS en visuel efface
nnoremap <F2> :update<CR>inoremap <F2> <c-o>:update<CR>vnoremap <F2> <c-c>:update<CR>gv
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
.vimrcOptionsAbreviationsMappingsCommandes
.vimrc - Diverses Definitions II
Extraits
" Bascule l’autoindentset ainoremap <F7> :set ai!<CR>:set ai?<CR>
imap <F7> <SPACE><ESC><F7>a<BS>
" Edition et recharge rapide du .vimrclet vimrc=expand(’<sfile>:p’)nnoremap ,ve :sp <C-R>=vimrc<CR><CR>nnoremap ,vu :source <C-R>=vimrc<CR><CR>
" Digraphs pour œ et Œ:digraph oe 156:digraph OE 140
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
.vimrcOptionsAbreviationsMappingsCommandes
Les Options I|options|
Changer une option avec |:set| ou |:let|
:set option [= valeur ]:set option ? " Interroge la valeur:set option ! " Bascule la valeur:let &option = valeur
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
.vimrcOptionsAbreviationsMappingsCommandes
Les Options II - Extrait I|<+tags+>|
|’nocompatible’| : Vim !! not vi
|’autowrite’| :
|’backup’| : no
|’writebackup’| :
|’viminfo’| : %,’50,100,:100,n /.viminfo
|’bs’| <- 2 : backspace sans frontieres
|’ai’| : auto indent
|’errorbells’| : no
|’esckeys’| : touches curseur en mode insert
|’iskeyword’| : lettres acceptees comme pouvant formerdes mots
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
.vimrcOptionsAbreviationsMappingsCommandes
Les Options II - Extrait II|<+tags+>|
|’modeline’| : oui!
|’modelines’| : 3
|’shiftwidth’| : 4
|’tabstop’| : 8
|’textwidth’| : 72
|’tags’| : ou chercher les fichiers de tags
|’switchbuff’| : useopen,split -> |:make|
|’shwocmd’| : la commande incomplete
|’showmatch’| : la parenthese correspondante
|’showmode’| : le mode courant
|’title’| : titre du doc dans les xterm
|’hlsearch’| : highlight search
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
.vimrcOptionsAbreviationsMappingsCommandes
Les Abreviations|Abreviations|
Modes : Insertion, Replace et Ligne-de-Commande
Expansion automatique de mots.
Exemples
:inoreab LE Le:inoreab tete tete:inoreab plrs plusieurs
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
.vimrcOptionsAbreviationsMappingsCommandes
Les Mappings I|mapping|
:[{mode}][nore]map
Un mapping associe une sequence de touches, dans un modedonne, a une serie de touches comme si elles avaient etesaisies au clavier.
Exemples
:inoremap <silent> <c-x>if if()<esc>2hi:vnoremap <silent> <leader>if
\ <c-\><c-n>’>a}<esc>’<iif(){<esc>:nmap <silent> <leader>if V<leader>if:cnoremap <silent> <c-a> <home>
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
.vimrcOptionsAbreviationsMappingsCommandes
Les Mappings II – Commentaires|mapping|
Commentaires
execution silencieuse: <silent>touches : <c-x>, <c-a>, <esc>, <left>, <home>sortie vers le mode normal : <esc> peut bipper, <c-\><c-n>jamais’< (/resp. ’>) : marque le debut (/resp. la fin) de la zoneselectionneeparametrisation des mappings : <leader>commande ecrite sur deux lignes avec l’antislash
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
.vimrcOptionsAbreviationsMappingsCommandes
Les commandes|user-commands|
Mode (Ex) Ligne-de-Commande
Exemples
:command! -range=% -nargs=0 Uniq\ silent <line1>,<line2>g/^\%<<line2>l\(.*\)\n\1$/d
:command! -range=% -nargs=0 Uniq\ <line1>,<line2>call <sid>EmuleUniq()
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
.vimrcOptionsAbreviationsMappingsCommandes
Les commandes|user-commands|
Mode (Ex) Ligne-de-Commande
Exemples
:command! -range=% -nargs=0 Uniq\ silent <line1>,<line2>g/^\%<<line2>l\(.*\)\n\1$/d
:command! -range=% -nargs=0 Uniq\ <line1>,<line2>call <sid>EmuleUniq()
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Les Fonctions I|user-functions|
Syntaxe
function[!] <nom>([<arguments>])endfunction
Visibilite de la fonction :
publique ssi 1e lettre du nom en majusculeprivee ssi commence par s: ;NB: la seule facon d’utiliser cette fonction dans un mappingest d’utiliser <sid> en place de s: dans le mapping.
Arguments :
prefixes par a: a l’utilisationnombre quelconque -> . . . ; a:0 ; a:{i}
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Les Fonctions II|user-functions|
Exemple
function! s:EmuleUniq() rangelet l1 = a:firstlinelet l2 = a:lastlineif l1 < l2silent exe l1.’,’l2.’-g/^\(.*\)\n\1$/d _’call histdel(’search’, -1) " necessary
endifendfunction
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Les Donnees I - Generalites|eval|
Deux types de donnees : chaınes et entiers
Modification avec |:let|
Utilisation assez classique, voir |expression-syntax|
Dans les variables qui servent d’option a Vim, on trouve|mapleader| et |maplocalleader|
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Les Donnees II - Les differents types de variables|internal-variables|, |expr9|
∅ variable locale dans une fonction, globale sinon
g: variable globale
l: variable locale a une fonction
b: variable restreinte au buffer courant
w: variable restreinte a la fenetre courante
a: parametre formel de fonction
s: variable restreinte a un script Vim
$ variable d’environnement
& option
&l: valeur locale (buffer) d’une option
@ registre
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Instructions de Controle
|:if|
if expr1Cmd1
elseif expr2Cmd2
elseCmd3
endif
|:while|, |:break|
while expr1Cmd1if expr2break
endifCmd2
endwhile
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Mappings et Fonctions
Insere du texte Fait autre chose
I. m: <c-r>=f()<cr>f: return "bla"
m: <c-o>:call f()<cr>f: renvoie rien
N. m: :call f()<cr>f: renvoie rienf: :exe "normal! ibla\<esc>"
m: :call f()<cr>f: renvoie rien
V. On quitte le mode (<c-\><c-n>) et l’on voit ce quel’on veut faire exactement
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Petites choses utiles
Commandes incontournables (autres que :s, et :g)
|:normal|! : execute des commandes en mode normal(depuis le mode commande. . . )|:exe| Execute la chaıne passee en parametre comme unecommande Ex. Se marie bien avec |:normal| pour envoyerdes sequences actives (”\<esc>”).|:call| pour appeler une fonction
Fonctions utiles |functions||expand()||substitute()||search()||getline()|
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Les Plugins I - Installation|standard-plugin|
Installation dans un des repertoires de {rtp}/plugin/ –|’runtimepath’|
Non partage : $HOME/.vim/plugin/ (*nix),$HOME/vimfiles/plugin/ (windows)Partage : $VIMRUNTIME/plugin/ (*nix)$VIM/vimfiles/plugin/ (windows)
Installation de l’eventuelle documentation :
{rtp}/doc/ ;:helptags bonrep/doc/
Parfois des options a definir une fois pour toutes dans le .vimrc
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Les Plugins II - Squelette
Squelette simplifie de plugin
if exists(’g:loaded_nom_du_plugin’)\ && !exists(’g:force_reload_nom_plugin’)finish
endiflet g:loaded_nom_du_plugin = 1
fonctions, mappings, abbreviations et commandes
Cela permet :
d’eviter de le charger plusieurs fois selon les dependances
de ne pas le charger si la variable est positionnee dans le.vimrc (plugins partages)
simplifier son developpement.
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Les Plugins III - Mappings par defaut|hasmapto()|, |<Plug>|
Mapping par defaut dans le plugin . . .
if !hasmapto(’<Plug>Feature1’, ’i’)imap <leader>keys <Plug>Feature1
endifinoremap <Plug>Feature1 ......
Mapping «force» dans le .vimrc
imap cequimeplait <Plug>Feature1
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Les Ftplugin I - Les Filetype-Plugins|ftplugins|
Role :
charger des definitions en fonction du type du fichier
Interets :
etendre de facon modulaire Vimmappings differents sur «if» pour le C++, l’Ada, bash, . . .
Necessite dans le .vimrc :
:filetype plugin on
Emplacements :
{rtp}/ftplugin/<filetype>.vim{rtp}/ftplugin/<filetype>_<name>.vim{rtp}/ftplugin/<filetype> /<name>.vim
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Les Ftplugins II - Squelette
if exists(’b:loaded_nom_du_plugin’)\ && !exists(’g:force_reload_nom_plugin’)finish
endiflet b:loaded_nom_du_plugin = 1... mappings, abbreviations et commandes locales
if exists(’g:loaded\_nom_du_plugin’)\ && !exists(’g:force_reload_nom_plugin’)finish
endiflet g:loaded_nom_du_plugin = 1... fonctions
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Les Ftplugins III -
La doc propose d’utiliser b:did_ftplugin comme gardeanti-reinclusion. Cette approche est valable pour des ftpluginsofficiels et uniques seulement.
Changements:variables g: b:options |:set|
&|:setlocal|&l:
commandes ∅ -bmappings ∅ <buffer>
leader <leader>mapleader
<localleader>maplocalleader
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Le VimLLes PluginsLes FTPluginsLe reste
Je n’ai pas parle . . .
des autres types de scripts (indent, syntax, folding, macros,compiler-plugin)
des autres langages de script utilisables depuis Vim (Perl,Ruby, Python, TCL)
des divers plugins dignes d’interet quand on code (Project,tagexplorer, Matchit, EnhancedCommentify, mu-Template,CVS)
Luc Hermitte, <[email protected]> Vim
SommaireIntroduction
Elements parametrablesScripts
Liens utiles
Liens utiles
http://vim.sourceforge.net/ : le site de Vim sur SF
http://vimdoc.sourceforge.net/ : les documentationssur Vim
http://hermitte.free.fr/ : mon site
http://michoux.born2frag.org/conf/ : la conferenceutilisateur de Sebastien Michel
[email protected] : la mailing-list
http://fr.groups.yahoo.com/group/vim-fr/ : vim-fr, lamailing-list
Luc Hermitte, <[email protected]> Vim