Ich habe diese Zeilen in meiner .vimrc-Datei:
:map <F9> :exe ':!gdbset bp "%:'.line(".").'"'<CR><CR>
:map <F8> :exe ':!gdbset clear bp "%:'.line(".").'"'<CR><CR>
Sie funktionieren hervorragend zum Hinzufügen und Entfernen von Haltepunkten in gdb! Nur ein Problem (das ich kenne) … aus irgendeinem Grund funktionieren Zeilennummern in den 80ern nicht. Wenn ich meinen Cursor auf Zeile 85 setze und F9 drücke, sollte ein Haltepunkt auf Zeile 85 gesetzt werden. Wenn ich meinen Cursor auf Zeile 75 setze und F9 drücke, sollte ein Haltepunkt auf Zeile 75 gesetzt werden.
Die resultierenden Haltepunkte sehen folgendermaßen aus:
b myfile.cc:5
b myfile.cc:75
Zeile 85 hat nicht funktioniert. Ich habe die 80er getestet. Keine davon funktioniert. Alle anderen Zeilen scheinen zu funktionieren. Warum? Ich bin sicher, einer von euch VIM-Experten kann mir das erklären. Es ist fast so, als ob das ":8" als ein anderer Befehl oder so interpretiert wird.
Antwort1
%:8
ist eine gültigeDateinamenmodifikator, also wird es von Vim als Teil des :!
Befehls interpretiert.
Sie könnenexpand('%')
manuell zu erweitern %
und dann richtig zu zitieren mitshellescape(…,1)
:
:map <F9> :exe '!gdbset bp' shellescape(expand('%').':'.line('.'),1)<CR><CR>
:map <F8> :exe '!gdbset clear bp' shellescape(expand('%').':'.line('.'),1)<CR><CR>