Universal ctags points the cursor to line numbers rather than the actual definition (as language servers do). Vim uses ex (:h Ex-mode) commands as destinations. We want to generate call cursor(line,col) for each identifier.

fn processStr(l) :=
  let
    val s := l->1
    val line := split s /[ \(:]+/
    val col := #line.1 + 1
    val outLine := sprintf '%s\t%s\tcall cursor(%i,%i)' (line.2 . fp . l->2 . col)
  in outLine end;

processStr¨{%/fn +[[:lower:]][[:latin:]]\*.\*:=/}{(`0 . ix)}

This is simple-minded but suited to Jacinda.