insérer nom du fichier dans template de vim

Bonjour!
J’ai suivi cette astuce :
blog.asher256.com/vim-avoir-un-s … ogrammeur/
Cependant, J’aimerais ajouter dans mes templates une ligne, donnant le nom du fichier créé. Par exemple, pour un programme en c, ça donnerait quelque chose du genre :

[code]//
// Nom_du_programme.c
// Copyright 2010 thuban thuban@singularity.fr
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
// MA 02110-1301, USA.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv)
{

return 0;

}[/code]
Que dois-je rajouter pour que “Nom_du_programme” soit automatiquement remplacé par le nom du nouveau fichier créé?

bonjour pour mes templates latex j’utilise ceci

<+ +> !comp! !exe! % File: !comp!expand("%:p:t")!comp! % Created: !comp!strftime("%a %b %d %I:00 %p %Y ").substitute(strftime('%Z'), '\<\(\w\)\(\w*\)\>\(\W\|$\)', '\1', 'g')!comp!

ce qui me donne
% File: test.tex
% Created: mer. juil. 07 05:00 2010 C

Bonjour, et merci pour la réponse!
Je ne comprends cependant pas très bien. C’est ton template pour un document latex que tu as copié? Ou bien est-ce présent dans le .vimrc?
Tu veux bien expliquer comment tout ça marche s’il te plaît, et si ça ne te dérange pas? 8)

ce sont des scripts de latexvim mais tu as la réponse à ta question dans l’aide

:h template

C’est super cette aide! je ne vois pas encore comment afficher le nom du fichier créé, mais je devrais bien trouver. Merci!

au bufNewFile *.html ks|call CreaFichName()|'s

fun CreaFichName()
execute(“r! echo %”)
endfun

% est le nom du fichier, il y a d’autre options, regarde mon post le dernier message de cette page viewtopic.php?f=8&t=8605&hilit=vim

Ah, eh bien voilà, c’est tout simple maintenant! Il me manquait juste la façon d’obtenir le nom du fichier, soit % .
Merci pour tous les lien, c’est vraiment super!

Mine de rien, la syntaxe du vimrc me laisse pantois…

Bon, voilà ce que ça donne désormais. J’aurais voulu pouvoir mieux choisir où mettre le nom du fichier, avec une substitution par exemple, mais pas moyen de faire ça comme en script shell. Donc j’attends d’avoir le temps de lire l’aide de vim pour faire ça mieux. Merci pour tout!
Oh, une autre question, comment mettre dans le .vimrc une instruction disant de se placer à la ligne n ?

syntax on colorscheme darkblue set number set backup set history=100 set undolevels=150 if filewritable(expand("~/.vim/backup")) == 2 " comme le répertoire est accessible en écriture, " on va l'utiliser. set backupdir=$HOME/.vim/backup else if has("unix") || has("win32unix") " C'est c'est un système compatible UNIX, on " va créer le répertoire et l'utiliser. call system("mkdir $HOME/.vim/backup -p") set backupdir=$HOME/.vim/backup endif endif set autoread set showmatch set laststatus=2 set incsearch set noignorecase set infercase set showcmd set ruler set cindent autocmd BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal g`\"" | \ endif au bufNewFile *.html 0r ~/.vim/templates/html au bufNewFile *.sh 0r ~/.vim/templates/sh au bufNewFile *.c 0r ~/.vim/templates/c autocmd bufNewFile *.c ks|call CreaFichNamec()|'s autocmd bufNewFile,BufWritePre,FileWritePre *.c ks|call LastMod()|'s autocmd bufNewFile *.sh ks|call CreaFichNamesh()|'s fun LastMod() if line("$") > 20 let l = 20 else let l = line("$") endif exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified: " . \ strftime("%Y %b %d") endfun fun CreaFichNamec() execute("r! echo \"// %:t\"") endfun fun CreaFichNamesh() execute("r! echo \"# %:t\"") endfun

[quote=“thuban”]Bon, voilà ce que ça donne désormais. J’aurais voulu pouvoir mieux choisir où mettre le nom du fichier, avec une substitution par exemple, mais pas moyen de faire ça comme en script shell.[/quote]pour une substitution en script shell il faut utiliser parexemple sed et les expression régulières. C’est un truc formidable mais un peu compliqué au début.
Avec vim tu peux aussi utiliser les expressions régulières :h substitute

[quote]
Donc j’attends d’avoir le temps de lire l’aide de vim pour faire ça mieux. Merci pour tout!
Oh, une autre question, comment mettre dans le .vimrc une instruction disant de se placer à la ligne n ?
[/quote]on va à la ligne 10 en faisant :10 ca peut sans doute t’aider.

sinon à + je pars en vacance samedi :041 enfin
On va se geler car je part en Bretagne. Ca va me changer car ca devient difficile avec la chaleur ici et il annonce la pluie :angry:

Oui, je sais pour changer de ligne avec :numero_de_ligne . Mais je ne parviens pas à dire, dans le .vimrc : Si j’ouvre un nouveau fichier .c, place le curseur à la ligne n .
De même, je m’étais dit que je mettrais dans mes templates : Nom_du_Fichier
et dans le vimrc, une fonction qui éxécute un %s/Nom_du_Fichier/%/g , sauf que le “%” n’est pas remplacé par le nom du fichier.
Bref, je m’embrouille pour l’instant.

Eh bien bonne vacances à toi! C’est très joli la bretagne, et pas aussi pluvieux qu’on veut le faire croire! Profite bien! 8)

Je n’ai pas le temps de regarder ton truc mais je te conseille de poster ici fr.groups.yahoo.com/group/vim-fr/
La liste n’est plus très active mais tu auras toujours une réponse de luc hermitte.

@+

bonjour

avant de partir demain j’avais envie de modifier pour mes fichiers tex.

Lorsqu’un nouveau fichier .tex est crée je charge un template texte.tex

Lorsqu’un nouveau fichier .tex est crée, j’écris au début du texte le nom, la date de création et l’heure de modification.
set filetype=tex c’est pour charger le menu tex de latexsuite.

au bufNewFile *.tex ks|call CreaFich()|'s
fun CreaFich()
set filetype=tex
execute("r! echo \"\\%Fichier: \"%")
execute("r! echo \"\\%Crée le \"".strftime("%d %b %Y %X"))
execute("r! echo \"\\%Dernière modification: \"".strftime("%d %b %Y %X"))
endfun[/code]

Lorsque j'enregistre le fichier alors la date de modification est changée
[code]autocmd BufWritePre,FileWritePre *.tex   ks|call DerModif()|'s
fun DerModif()
  if line("$") > 20
    let l = 20
  else
    let l = line("$")
  endif
  exe "1," . l . "g/Dernière modification: /s/Dernière modification: .*/Dernière modification: " .
  \ strftime("%d %b %Y %X")
endfun

Mais… tu sais que tu es un type formidable? Je n’ai même pas eu le temps de poster sur ton lien! tout est parfait pour moi :
:

[code]syntax on
colorscheme darkblue
set number
set backup
set history=100
set undolevels=150
if filewritable(expand("~/.vim/backup")) == 2
" comme le répertoire est accessible en écriture,
" on va l’utiliser.
set backupdir=$HOME/.vim/backup
else
if has(“unix”) || has(“win32unix”)
" C’est c’est un système compatible UNIX, on
" va créer le répertoire et l’utiliser.
call system(“mkdir $HOME/.vim/backup -p”)
set backupdir=$HOME/.vim/backup
endif
endif
set autoread
set showmatch
set laststatus=2
set incsearch
set noignorecase
set infercase
set showcmd
set ruler
set cindent
autocmd BufReadPost *
\ if line("’"") > 0 && line("’"") <= line("$") |
\ exe “normal g`”" |
\ endif
au bufNewFile *.html 0r ~/.vim/templates/html
au bufNewFile *.sh 0r ~/.vim/templates/sh
au bufNewFile *.cpp 0r ~/.vim/templates/cpp
au bufNewFile *.c 0r ~/.vim/templates/c
autocmd bufNewFile *.c ks|call CreaFichNamec()|'s
autocmd bufNewFile *.cpp ks|call CreaFichNamec()|'s
autocmd BufWritePre,FileWritePre *.c *.cpp ks|call DerModif()|'s

fun CreaFichNamec()
execute("r! echo "// Fichier: “%”)
execute(“r! echo “// Crée le “”.strftime(”%d %b %Y %X”))
execute(“r! echo “// Dernière modification: “”.strftime(”%d %b %Y %X”))
endfun

fun DerModif()
if line("$") > 20
let l = 20
else
let l = line("$")
endif
exe “1,” . l . “g/Dernière modification: /s/Dernière modification: .*/Dernière modification: " .
\ strftime(”%d %b %Y %X")
endfun
[/code]

je remonte ce post car avant la rentrée j’ai fait un peu le ménage dans mon .vimrc

le nom du fichier s’obtient avec @%
vim.wikia.com/wiki/Get_the_name_ … rrent_file

j’ai donc rajouté à mon script précédent
exe “1,” . l . "g/%Fichier: ./s/%Fichier: ./%Fichier: ".@%
pour changer le nom du fichier si par hasard je l’ai modifié.

j’ai donc

autocmd BufWritePre,FileWritePre *.tex ks|call DerModif2()|'s fun DerModif2() if line("$") > 20 let l = 20 else let l = line("$") endif exe "1," . l . "g/%Fichier: .*/s/%Fichier: .*/%Fichier: ".@% exe "1," . l . "g/Dernière modification: /s/Dernière modification: .*/Dernière modification: " . \ strftime("%d %b %Y %X") endfunavec en début de fichier nomdufichier.tex

%Fichier: nomdufichier.tex %Crée le 24 août 2010 %Dernière modification: 31 août 2010 11:14:10