sommaire introduction ´el´ements param´etrables liens...

31
Sommaire Introduction ´ El´ ements param´ etrables Scripts Liens utiles Vim et sa param´ etrisation Luc Hermitte, <[email protected]> Pour le Club des Utilisateurs du Libre de Toulouse et des environs 11 Septembre 2004 Luc Hermitte, <[email protected]> Vim

Upload: others

Post on 06-Sep-2019

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 2: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 3: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 4: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 5: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 6: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 7: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 8: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 9: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 10: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 11: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 12: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 13: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 14: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 15: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 16: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 17: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 18: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 19: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 20: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 21: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 22: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 23: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 24: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 25: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 26: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 27: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 28: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 29: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 30: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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

Page 31: Sommaire Introduction ´El´ements param´etrables Liens utileshermitte.free.fr/vim/ressources/vim-config.pdfSommaire Introduction ´El´ements param´etrables Scripts Liens utiles

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