Skip to content
/
Try

The best terminal editor for SSH and remote servers

Open a folder, quick open, type, multiple cursors, save.

The best terminal editor for SSH depends on how long you stay. For a quick config change, use what is already on the server: vi is nearly always there, and nano is on many distributions.

For hours of coding on a remote machine, install an editor that you can put in your home directory without root, that copies to your local clipboard over SSH (OSC 52), and that has language servers. Neovim and Helix do that with modes; Micro and Skink do it without.

  1. Is it there, or can you install it without root? On shared or locked-down hosts you may only have your home directory. A single static binary is easiest.
  2. Clipboard. Over SSH the remote editor cannot see your local clipboard. Copying needs OSC 52 support in both the editor and your terminal; pasting usually goes through your terminal’s paste key.
  3. Mouse. Mouse events are escape sequences and work over SSH, but the editor has to request them.
  4. Latency. Every keystroke crosses the network. Editors that only redraw what changed feel better on slow links.
  5. Code features. Language servers and git integration on the host, since that is where the code is.
  6. Survives disconnects. Run it inside tmux or screen, whatever editor you pick.

Vim, Neovim, nano, Micro, Helix and Skink compared

Section titled “Vim, Neovim, nano, Micro, Helix and Skink compared”
Preinstalled Install without root Modal Mouse OSC 52 copy LSP built in
vi / Vim Almost always Hard (build from source or AppImage) Yes With set mouse=a Bundled osc52 package in recent Vim, or a plugin No (plugins)
Neovim Sometimes Yes (release tarball or AppImage) Yes On by default Yes, detected automatically Yes, servers configured by you
nano Often Rarely needed No With set mouse No No
Micro Rarely Yes (one binary) No On by default With "clipboard": "terminal" No (plugins)
Helix Rarely Yes (tarball with runtime folder) Yes On by default With clipboard-provider = "termcode" Yes
Skink No Yes (one static binary, no sudo) No On On by default Yes
  • One-off edit on a box you don’t own: vi or nano. Learn how to exit Vim and you are set.
  • You already love modal editing: Neovim (with your config synced) or Helix (no config needed).
  • You want desktop-style keys and no config: Micro for a small, plugin-friendly editor; Skink if you also want LSP, git and a terminal tab built in.
  • The host is Alpine, a container or a tiny VM: a static binary. Micro and Skink both ship one; Skink’s Linux builds are static musl for x86_64 and aarch64.
  • You want the full GUI and have VS Code locally: VS Code Remote SSH. See Skink vs VS Code Remote SSH for its host requirements.

Skink is meant to be “the editor you run over SSH”.

One command, no sudo, puts a static binary in ~/.local/bin:

Terminal window
curl -fsSL https://skink.cc/install.sh | sh

It is small: about 8 MB of RAM when idle and a first frame in a few milliseconds.

  • Clipboard by default. Copy and cut also emit OSC 52, so the text lands on your local clipboard if your terminal allows it.
  • Mouse on. Click, drag, scroll, click tabs and drag split dividers, through SSH and tmux.
  • Language servers start on first use if they are installed on the server.
  • Git: gutter, hunks, blame and a git panel work on the server’s repo.
  • A terminal tab: F12 flips to a shell on the same host. Run tests, htop or an AI agent there, and Ctrl+click a file:line in the output to open it.
  • Session restore: run skink in a project folder and it reopens your files, splits and shells from last time.

Over SSH and inside tmux, some chords never reach the editor. In Skink every key also has a typed command: press Ctrl+E and type, for example, files for the file tree or comment to toggle a comment. See typed commands.

It is alpha and has no plugins. And you have to install it: it is not on the server by default.

Let the mouse and the clipboard through tmux:

Terminal window
# ~/.tmux.conf on the server
set -g mouse on
set -g set-clipboard on
  • Use a terminal that supports OSC 52 and truecolor, for example Kitty, WezTerm, Ghostty, iTerm2 or Windows Terminal.
  • Keep TERM sane (xterm-256color or tmux-256color) so the editor knows what your terminal can do.
  • Set EDITOR on the server so git, crontab and sudoedit use your choice. For Skink, see Use Skink as your $EDITOR.