# The best terminal editor for SSH and remote servers

> Which terminal editor to use over SSH? Compare Vim, Neovim, nano, Micro, Helix and Skink on install, mouse, clipboard, LSP and minimal hosts.

Source: https://skink.cc/articles/best-terminal-editor-for-ssh/

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.

## What matters in an SSH editor

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

| | 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 |

## Which editor to pick, by situation

- **One-off edit on a box you don't own:** `vi` or `nano`. Learn how to [exit Vim](https://skink.cc/articles/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](https://skink.cc/compare/vscode-remote/) for its host requirements.

## Why Skink is built for SSH

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

### It installs in your home directory

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

```sh
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 and mouse work through SSH

- **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.

### The code tools run on the host

- **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.

### Keys that tmux or your terminal swallow

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](https://skink.cc/editing/typed-commands/).

### Where Skink falls short today

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

## Tips for any editor over SSH

Let the mouse and the clipboard through tmux:

```sh
# ~/.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](https://skink.cc/tools/skink-as-editor/).

## Related

- [Edit files on a remote server without a GUI](https://skink.cc/articles/edit-files-on-a-remote-server/)
- [Copy and paste over SSH](https://skink.cc/articles/copy-paste-over-ssh/)
- [SSH and remote editing guide](https://skink.cc/remote/ssh-remote-editing/)
