(erledigt) gvim map'pen Kein Editorbefehl: sed 's/\.cpp//g')

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
ren22
Beiträge: 397
Registriert: 26.11.2006 09:05:14

(erledigt) gvim map'pen Kein Editorbefehl: sed 's/\.cpp//g')

Beitrag von ren22 » 09.02.2018 23:26:09

Hallo,

ich würde gerne die Taste F9 map'pen um auf die schnelle cpp code zu compiliere und auszuführen aber leider bekomme ich immer die Meldung beim starten von gvim :
Kein Editorbefehl: sed 's/\.cpp//g')
der Code in der ~/.vimrc

Code: Alles auswählen

map <F9> !set $1 `echo "%" | sed 's/\.cpp//g'` ;gcc -o $1 "%" `pkg-config --cflags --libs gtk+-3.0`; chmod o+x $1; ./$1; rm -f $1;

Aktuell compiliere und starte ich den Code mit:

Code: Alles auswählen

:command Make !set $1 `echo "%" | sed 's/\.cpp//g'` ;gcc -o $1 "%" `pkg-config --cflags --libs gtk+-3.0`; chmod o+x $1; ./$1; rm -f $1;
was aus der quell Datei auch gleichzeitig den Namen für den output erzeugt, ohne .cpp am Ende, ist aber auf die Dauer ziemlich umständlich, jedesmal ESC zu drücken, dann doppelpunkt tippen und Make einzugeben, gefolgt von Enter.

Jemand eine Idee wo der Fehler liegt ?

Danke
Zuletzt geändert von ren22 am 10.02.2018 01:11:40, insgesamt 1-mal geändert.

tobo
Beiträge: 513
Registriert: 10.12.2008 10:51:41

Re: gvim map'pen Kein Editorbefehl: sed 's/\.cpp//g')

Beitrag von tobo » 10.02.2018 00:28:35

ren22 hat geschrieben: ↑ zum Beitrag ↑
09.02.2018 23:26:09
Jemand eine Idee wo der Fehler liegt ?
Die Pipe benötigt ein Escape?

Code: Alles auswählen

...echo "%" \| sed 's/\.cpp//g'...

ren22
Beiträge: 397
Registriert: 26.11.2006 09:05:14

Re: gvim map'pen Kein Editorbefehl: sed 's/\.cpp//g')

Beitrag von ren22 » 10.02.2018 01:11:26

Dankeschön. genau da lag der Fehler. .... aber warum muss man da escapen ?

Benutzeravatar
rodney
Beiträge: 66
Registriert: 09.12.2016 04:15:59
Lizenz eigener Beiträge: MIT Lizenz

Re: (erledigt) gvim map'pen Kein Editorbefehl: sed 's/\.cpp//g')

Beitrag von rodney » 10.02.2018 01:23:52

Bei echo "%" bzw :echo expand("%") wird die Datei im Buffer relativ zum CWD ausgegeben. Zumindest in vim kann die Ausgabe der Erweiterung mit dem Modifier %:r unterbunden werden, vielleicht klappt das in deinem Fall ja auch und die sed-Konstruktion kann weg.
I don't like poofy coffee... give me Columbian Supremo. --Izchak

tobo
Beiträge: 513
Registriert: 10.12.2008 10:51:41

Re: gvim map'pen Kein Editorbefehl: sed 's/\.cpp//g')

Beitrag von tobo » 10.02.2018 01:48:48

ren22 hat geschrieben: ↑ zum Beitrag ↑
10.02.2018 01:11:26
genau da lag der Fehler. .... aber warum muss man da escapen ?
Weil die Pipe im Ex-Mode die Sonderbedeutung eines Kommandoseparators hat. Quoting/Escapen bedeutet immer Sonderbedeutung aufheben.
"\|" könntest du auch durch <bar> ersetzen:

Code: Alles auswählen

<BS>           Backspace
<Tab>          Tab
<CR>           Enter
<Enter>        Enter
<Return>       Enter
<Esc>          Escape
<Space>        Space
<Up>           Up arrow
<Down>         Down arrow
<Left>         Left arrow
<Right>        Right arrow
<F1> - <F12>   Function keys 1 to 12
#1, #2..#9,#0  Function keys F1 to F9, F10
<Insert>       Insert
<Del>          Delete
<Home>         Home
<End>          End
<PageUp>       Page-Up
<PageDown>     Page-Down
<bar>          the '|' character, which otherwise needs to be escaped '\|'
http://vim.wikia.com/wiki/Mapping_keys_ ... l_(Part_2)

Antworten