  We consider the problem of designing low-redundancy codes in settings where
one must correct deletions in conjunction with substitutions or adjacent
transpositions; a combination of errors that is usually observed in DNA-based
data storage. One of the most basic versions of this problem was settled more
than 50 years ago by Levenshtein, or one substitution, with nearly optimal
redundancy. However, this approach fails to extend to many simple and natural
variations of the binary single-edit error setting. In this work, we make
progress on the code design problem above in three such variations:
  We construct linear-time encodable and decodable length-$n$ non-binary codes
correcting a single edit error with nearly optimal redundancy $\log
n+O(\log\log n)$, providing an alternative simpler proof of a result by Cai,
Chee, Gabrys, Kiah, and Nguyen (IEEE Trans. Inf. Theory 2021). This is achieved
by employing what we call weighted VT sketches, a notion that may be of
independent interest.
  We construct linear-time encodable and list-decodable binary codes with
list-size $2$ for one deletion and one substitution with redundancy $4\log
n+O(\log\log n)$. This matches the existential bound up to an $O(\log\log n)$
additive term.
  We show the existence of a binary code correcting one deletion or one
adjacent transposition with nearly optimal redundancy $\log n+O(\log\log n)$.
