Editors and Packages
The last piece of a real development environment: editing files without a GUI, and installing software the Linux way.
Terminal text editors
When you're already in a terminal (editing a config file on a remote server, for example), a terminal-based editor avoids switching context entirely:
nano notes.txt # beginner-friendly, shortcuts shown on screen
vim notes.txt # ubiquitous, steeper learning curve, worth learning eventually
nano shows its keyboard shortcuts (like ^O to save) right at the bottom of the screen, making it the easiest place to start. vim is nearly universal, it's preinstalled on almost every Linux server you'll ever SSH into, which is exactly why it's worth getting comfortable with over time even though nano is friendlier at first.
Package managers
Installing software on Linux almost never means downloading an installer from a website, a package manager fetches, installs, and keeps software up to date from a trusted repository:
# Debian/Ubuntu
sudo apt update && sudo apt install git
# macOS
brew install git
# Cross-platform, no admin rights required
webi git
apt is Debian/Ubuntu's package manager, built into the OS. Homebrew (brew) is the de facto standard on macOS, and increasingly used on Linux too. Webi is a newer, simpler installer that doesn't require sudo at all, handy when you don't have admin rights on a machine.
Setting up a dev environment, end to end
sudo apt update
sudo apt install git python3 build-essential
git --version
python3 --version
That's the complete pattern behind setting up almost any machine for development: update your package lists, install the tools you need by name, and verify each one with --version.