[C] VIM Makro -> kompilieren und ausführen

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

Hi Leute,

Ich hätte gerne ein Makro für vim um .c-Dateien mit gcc zu kompilieren und anschließend auszuführen.
Das Makro hätte ich gerne auf F4, daraus folgt:

Code: Alles auswählen

map #4 :!gcc "%"<CR>
Allerdings möchte ich nicht, dass das Programm a.out heißt sondern genauso wie die .c-Datei nur ohne Endung.
Wie stelle ich das an?

Freundliche Grüße
Jonas :wink:
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich bin ein wenig eingerostet, da ich zu Emacs gewechselt bin, aber

Code: Alles auswählen

map <f4> :!gcc -o expand("%:t") "%"<CR>
sollte funktionieren.
(Das ist btw nur ein Mapping, kein Macro)
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

Hi cofi,

danke für die schnelle Antwort :wink:
Aber es funktioniert leider nicht :(

Code: Alles auswählen

/bin/bash: -c: Zeile 0: Syntaxfehler beim unerwarteten Wort `('
/bin/bash: -c: Zeile 0: `gcc -o expand("re_first.c") "/home/jonas/scripts/Language C/re_first.c"'
Freundliche Grüße

Jonas
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das hier ist besser:

Code: Alles auswählen

map <f4> :!gcc -o "%:t:r" "%"<CR>
Und gut, dass der andre Befehl fehlerhaft war, denn er haette den Sourcecode ueberschrieben.
"%:t" ist der Dateiname ohne Pfad, "%:t:r" ist der Dateiname ohne Pfad und Dateiendung.
Der Fehler war natuerlich, dass Vim `expand` selbst aufruft und es nicht erst in der Zeile interpretiert :roll:

http://vimdoc.sourceforge.net/htmldoc/e ... pand%28%29
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

Vielen Dank nochmal cofi ;-)
Konnte mir dank dir ein paar nützliche Mappings machen:

Code: Alles auswählen

map <f3> :!gcc -o "%:r" "%"<CR>
map <f4> :!chmod 740 "%:r"<CR>
autocmd FileType python map <F5> :w<CR>:!python "%"<CR>
autocmd FileType c map <F5> :w<CR>:!"%:r"<CR>
Liebe Grüße,
Jonas :wink:
Antworten