Probably vim. It works fine out of the box but it took me way too long to figure out things like why my terminal colors were never quite right out of the box (had to set it to 256 color mode or what have you). And once I wanted to use some a few plugins the configuration started getting a bit convoluted/confusing. Hoping I have time some day/remember to figure out how to disable that annoying visual paste mode or whatever it is called that sometimes makes using it over SSH a nightmare.
For Surface hardware compatibility, check this out. I have a fully working touchscreen, pen and all, on my Surface Pro 4 running Mint thanks to this project. Essentially, it’s just a different kernel you install through your package manager that replaces the default for your distro. Let me know if you have any questions. https://github.com/linux-surface/linux-surface/