Wanting eine Funktion erstellen, die mir Python-Logger an jeder Funktion hinzufügen wird definiere ich auf Makro kam:Wie man verwendet: s mit regex und den Dateinamen in vim
nnoremap <leader>L :%s/\(\s*\)def \(\w\S*\)\(self.*\):/\0\r\1\tlogging.info(\'\2)\')/g<cr>
Es funktioniert, aber ich brauche eddited Dateiname auch, so habe ich Makro hinzugefügt: in \=expand("%p")
. Jetzt Makro sieht wie folgt aus:
nnoremap <leader>L :%s/\(\s*\)def \(\w\S*\)\(self.*\):/\0\r\1\tlogging.info(\' \=expand("%p") \2)\')/g<cr>
Welche nicht funktioniert, weil es ganze =expand("%p")
als Text druckt, nicht als Dateinamen.
Es scheint mir, dass ich in der Textsubstitution im Allgemeinen expand verwenden kann, wenn ich Regex nicht verwende.
Ich wäre schrecklich dankbar für korrekte Makro und Erklärung, warum es nicht funktioniert hat.
Es ist fast perfekt! es hat nur ein Problem mit *, mit dem erro auf Funktionen mit * und ** args: E871: (NFA regexp) Kann kein Multi haben, folge einem Multi! E61: Verschachtelt * – pholat
Können Sie ein Beispiel für eine Zeile angeben, die Sie ändern möchten, und das Ergebnis? –
Sicher wäre es: 'def __init __ (selbst, * args, ** kwargs):' – pholat