I'm following David Tong's lectures on the Quantum Hall Effect, in which he rederives the TKNN formula using the Kubo formula. The notes are a understandably hand-wavy with notation, so let me provide some preliminaries.
Preliminaries. Consider a single particle Hamiltonian $H$ on a 2d torus of length $L$ in each direction. Attach a square lattice to the 2d torus, with unit cell of length $a$ so that $L=Na$, so that the Hamiltonian $H$ is translationally invariant under the lattice.
We then know from Bloch's theorem that there exist Bloch states $\psi_{k\alpha}=|k \alpha\rangle$ which diagonalize $H$ where $k \in \text{Brillouin Zone}$. Therefore, at zero temperature, the Kubo formula tells us that $$ \sigma_{xy}= \frac{1}{iL^2}\sum_{E_{k\alpha} <E_F <E_{k'\alpha'}} \frac{\langle k\alpha|J_x|k'\alpha'\rangle\langle k'\alpha'|J_y|k\alpha\rangle-\text{c.c.}}{(E_{k'\alpha'}-E_{k\alpha})^2} $$ where the summation is over $k,\alpha,k',\alpha'$ such that $|k\alpha\rangle$ are filled band states and $|k'\alpha'\rangle$ are unfilled. This follows from the fact that the many-body Hamiltonian $H^\text{sq}$ is just the non-interacting sum of the single particle Hamiltonians $H$. Notice that by definition, the current of a gauge-invariant Hamiltonian $H[A]$ is defined as, $J=-\partial H[A]/\partial A$. Also notice that by gauge invariance, we have $$ H_k[A] \equiv e^{ik\hat{r}} H[A] e^{-ik\hat{r}} = H[A+k] $$ where I use the hat notation to indicate that $\hat{r}$ is the position operator. Therefore, $$ J=- \left. \frac{\partial}{\partial p} \right|_{p=0} H_p[A] $$ Substituting this back into the Kubo formula, we can focus on the term $$ -\langle k\alpha|J_x|k'\alpha'\rangle= \langle k\alpha| \left(\left. \frac{\partial}{\partial p} \right|_{p=0} H_p \right)|k'\alpha'\rangle $$ Where I have dropped the $A$ for simplicity.
Question. To prove the TKNN formula, we need that $$ \langle k\alpha|J_x|k'\alpha'\rangle= (E_{k'\alpha'}-E_{k\alpha})\langle \psi_{k\alpha}|\left.\frac{\partial}{\partial p_x}\right|_{p=k'}\psi_{p\alpha'}\rangle $$ However, I can't understand why. Indeed, ignoring the fact that $p$ can be arbitrarily small, while $k'$ can only be in the BZ, we still have \begin{align} J_x &= i[\hat{x},H] \\ \langle k\alpha|J_x|k'\alpha'\rangle &= (E_{k'\alpha'}-E_{k\alpha}) \langle k\alpha|i\hat{x}|k'\alpha'\rangle \end{align} Now if the Bloch states were just plane waves $|k\alpha\rangle \propto e^{ikx}$, then the statement holds since $i\hat{x}\mapsto \partial_{k_x}$ in momentum space. However, in general, what we have is that $|k\alpha\rangle = e^{ikr} u_{k\alpha}(r)$ for some lattice periodic $u_{k\alpha}$, and so I don't quite understand why the statement is true.