neale-ssh.el/README.md

2.8 KiB

What This Is

It's a lightweight SSH mode for Emacs. I used this a whole lot at my last job, which required me bouncing through lots of hops to get to a destination. Other SSH modes were failing me here, unable to keep up with dirtrack and other things. I just wanted a slim comint wrapper.

Put another way: I like Plan 9's acme. If you like Plan 9's acme, you might enjoy this.

Why You Should Use This

  • You have to use strange SSH implementations like like HP iLOs
  • You could benefit from a client that bunches up input by line (for instance, you have a high-latency connection and hate being 20 keystrokes ahead of what's echoed back)
  • You need an SSH implementation for Emacs that's fully debugged with putty on Windows
  • You'd like to have a working dabbrev-expand (M-/) in your shell sessions
  • You think it would be nice to have instant search over your entire session, even if it spans multiple hosts
  • You're a weirdo
  • You're a fan of cmd in acme

Why You Should Not Use This

  • You rely heavily on tab completion and can't switch to dabbrev-expand (M-/)
  • You use lots of things that absolutely require a terminal emulator (like Nethack or irssi)
  • You love using more and less more than you love using cat and Emacs built-in navigation

How To Use This

Drop it somewhere that you can load it up. Then, in your emacs initialization file:

(load "neale-ssh.el")
(setq ssh/default-host "woozle.org")
(setq ssh/frequent-hosts '("woozle.org" "zork.net"))

Things I've Found Useful

I have to work in Windows sometimes, which means I'm using plink.exe. I created an "emacs" profile in putty that has everything set up the way I want for plink. Then I tell emacs to use it:

(setq ssh-explicit-args (if (eq system-type 'windows-nt) '("-load" "emacs") '()))

Editing Remote Files

At some point after starting to use this, you are going to find yourself wanting to edit a remote file, and then you are going to scratch your head.

You could use cat filename, edit the text straight up in the ssh buffer, then cat > filename to write it back out.

I've been using ed a lot, which combined with emacs editing isn't too bad (but also not fantastic).

A New Hope For Remote File Editing

I've been trying to get some key bindings set up that will:

  • Dump the remote file
  • Capture the dump in a new buffer
  • Bind something in the new buffer to send a cat > $original_filename command and dump the output

But I'm having quite a bit of trouble with Emacs dropping characters for some reason. If you're interested in helping, have a look at neale-comint-edit.el and see what you can twiddle out of it.