Splitting into files is an approach that is easier to lint against (e.g. max 500 lines - a best-effort mechanism to foster SRP).
And it's not really problematic after mastering a few key aspects: jump to definition, and more interestingly Peek Definition.
It's also important to not traverse files top-to-bottom (which yes, is very tempting).
Optimal code traversal is tree-like, you jump from definition to definition, skipping over the irrelevant, and gathering necessary info on demand.
The file/line location of a function becomes irrelevant.