Bonsoir à toutes et tous!
Je débute en C…
A l’instar d’un EDI comme Code::Blocks, j’aimerais:
1/ Compiler un programme à partir de Vim sans makefile (ou alors en le créant automatiquement via Vim également)
2/ Exécuter ce même programme toujours à partir de Vim
J’ai parcouru différents sites, mais la plupart montrent un exemple avec makefile.
En fait, le but avoué est de mapper une touche pour la compilation/exécution du programme, dans le genre:
ou encore
Mais je m’y prends surement très mal (soyez indugents svp
).
Donc, pour résumer ma question:
1/ Peut-on compiler ET exécuter le programme en ne mappant qu’une seule touche ?
2/ Quel serait le bon mappage ?
3/ Vaut-il mieux créer un makefile avant l’opération? Comment? Peut-on mapper une touche pour la création de ce même makefile?
Merci d’avance et bonne soirée 
ou encore
[code]map <F5> :!gcc -o % -lm %.o<cr>[/code]
[quote="Vonstorm"]1/ Peut-on compiler [u]ET[/u] exécuter le programme en ne mappant qu'une seule touche ?[/quote]
Oui
[quote="Vonstorm"]2/ Quel serait le bon mappage ?[/quote]
[code]map <F5> :!gcc -o %:r % && ./%:r<cr>[/code]
C'était pas si mal ce que tu avais écris. Pour le « %:r » regarde là :
[url=http://forum.debian-fr.org/viewtopic.php?p=103448#p103448]Sujet sur vim dans Truc et astuces[/url]
[quote="Vonstorm"]3/ Vaut-il mieux créer un makefile avant l'opération? Comment? Peut-on mapper une touche pour la création de ce même makefile?[/quote]
L'interêt d'un makefile c'est juste d'automatiser et d'accélérer. Mais que quand on a une série de fichier. Tu peut te faire un modèle de Makefile directement généré par vim mais pas complet.
[quote="Vonstorm"]Merci d'avance et bonne soirée :slightly_smiling:[/quote]
Merci et bonne journée
ou encore
Oui
C’était pas si mal ce que tu avais écris. Pour le « %:r » regarde là :
Sujet sur vim dans Truc et astuces
L’interêt d’un makefile c’est juste d’automatiser et d’accélérer. Mais que quand on a une série de fichier. Tu peut te faire un modèle de Makefile directement généré par vim mais pas complet.
Merci et bonne journée
Merci Misterfreez!
Grâce à toi, j’avance à pas de géants 
Juste un p’tit problème au moment de l’exécution:
Mais si je fais cd /home/dsw/code/Ex1/ et puis ./main dans un terminal, le programme s’exécute bel et bien!
Je suppose que le problème se situe au niveau de .// mais je n’en suis pas sûr…
Pourtant dans le lien que tu m’as donné (et pour lequel je n’avais rien trouvé hier en faisant une recherche sur le mot vim dans la rubrique T&A
), je ne vois pas ce que je pourrais utiliser d’autre que ./%:r
Ca fonctionne tel quel chez toi 
Intéressant tu m’a fait découvrir quelque chose sur vim (comme quoi même après 4 ans).
Tu es où quand tu lance vim ? Dans / ?
À ce moment là je pense qu’il deviens plus simple de créer un makefile.
Encore une fois ça ne marche que pour un seul fichier source.
La commande vim c’est :
Il faut donc un makefile dans le répertoire des source que voici :
[code]CC=gcc
CXX=g++
CXXFLAGS=-Wall -Werror -g -pipe -O2 -march=prescott -fomit-frame-pointer
CFLAGS=$(CXXFLAGS) -ansi
RM = /bin/rm -v
SRC = $(wildcard *.c)
OBJ = $(wildcard *.o)
.PHONY: clean all
all: $(EXEC)
$(EXEC) : $(EXEC).o
$(EXEC).o : $(EXEC).c
clean :
$(RM) $(OBJ)
mrproper: clean
$(RM) $(EXEC)[/code]
Quand je fais :cd, il me retourne /home/dsw
En fait j’exécute Vim via un lanceur…
J’ai également tenté: :cd /home/dsw/code/Ex1 afin de le mettre dans le bon répertoire avant de lancer la commande mappée sur F5, mais le message d’erreur est le même.
Il ne me reste plus qu’à essayer via un makefile… Je te tiens au courant 
Fainéant comme je suis, j’ai un peu laissé passer de temps avant de me lancer dans les makefiles.
Entre temps, j’ai trouvé la solution pour ne plus obtenir d’erreur à l’exécution du programme compilé, j’ai ajouté set autochdir à mon .vimrc et tout roule!
Merci encore pour ton aide et bonne soirée! 
Tu nous ajoute ça un fil dans trucs et astuces que j’ai mis plus haut ?
Bon ben je l’ai fait 