I know that using can do something typedef cannot.
using
typedef
I'm just wondering if using completely replace typedef in all cases?
Yes, he can, a quote from the draft standard (my bold accent)
7.1.3 typedef specification [dcl.typedef]
2 The typedef name can also be entered using the alias declaration. the identifier after the using keyword becomes typedef-name and the optional spec-fi-seq attribute following the identifier refers to this typedef-name. It has the same semantics as if it were introduced by the typedef specification.