2018年1月2日火曜日

Emacsでsshからのtramp: リモートのファイルを編集する

概要

以前は、パスの書き方が複雑で tramp は使いにくそうだなと思っていましたが、 ssh.el とともに使うことで
便利に使用できるようになりました。

デモ動画

termtosvgで撮影しました 11:54 $  11:54 $ e 11:54 $ em 11:54 $ ema 11:54 $ emac 11:54 $ emacs 11:54 $ emacs  11:54 $ emacs - 11:54 $ emacs -n 11:54 $ emacs -nw  ✔ tak@mamec:~/Downloads 11:54 $ emacs -nw                                                                                                                                                 -UUU:----F1  *scratch*      All L1     (Fundamental) ----------                                                               Loading /Users/tak/lib/emacs/elisp/myinsert.el (source)...     Loading /Users/tak/lib/emacs/elisp/myinsertlibs.el (source)...                                                           done                                                           Loading /Users/tak/lib/emacs/elisp/myjavamode.el (source)...do\ne                                                             Loading /Users/tak/lib/emacs/elisp/myhtmlmode.el (source)...   Loading /Users/tak/lib/emacs/elisp/mycamlextend.el (source)...\Loading /Users/tak/lib/emacs/elisp/myperlextend.el (source)... Loading /Users/tak/lib/emacs/elisp/myperlextend.el (source)...\Loading /Users/tak/lib/emacs/elisp/mymode.el (source)...done   Loading /Users/tak/lib/emacs/elisp/mykeymap.el (source)...     Loading /Users/tak/lib/emacs/elisp/mykeymap.el (source)...done Loading /Users/tak/lib/emacs/elisp/namazu/namazu.el (source)..\.                                                              Loading `namazu.el': old-style backquotes detected!            Loading /Users/tak/lib/emacs/elisp/edit-server.el (source)...  File Edit Options Buffers Tools Help                           File Edit Options Buffers Tools Help                                                                                          -UUU:----F1  *                                                 Failed to start an edit-server                                 ble `exec-path-from-shell-check-startup-files' to disable this Loading /Users/tak/lib/emacs/elisp/yaml-mode.el (source)...                                        .bash_profile or .zshenv. \ Refer to your shell's man page for more info.  Customize `exe\c-path-from-shell-arguments' to remove "-i" when done, or disa\Loading /Users/tak/dev/ssh-el/ssh.el (source)...done           Loading help-at-pt...                                          Loading help-at-pt...done                                      ls does not support --dired; see `dired-use-ls-dired' for more\ details.                                                      Wrote /Users/tak/.emacs.d/.emacs.desktop.lock                  Turning on magit-auto-revert-mode...                           -UUU:----F1  *scratch*      All L1     (Fundamental) 11:54AM 2.  (set-background-color "#003300")                             -UUU:----F1  myinit.el      All L1     (Fundamental) 11:54AM 2.Turning on magit-auto-revert-mode...done                       File Edit Options Buffers Tools Emacs-Lisp Help                (setq max-lisp-eval-depth 10000)                               (setq bookmark-save-flag 1)                                    (setq ring-bell-function 'ignore)                              ;;; Mac-only configuration to use command and options keys     (when (eq system-type 'darwin)                                   (setq mac-pass-command-to-system nil)                          (set-face-font 'default "Monaco-11")                           (set-background-color "#003300")                               (set-foreground-color "light gray")                            ;; Mac-only                                                    ;; Command key as Meta key, Option key untouched               ;; http://www.emacswiki.org/emacs/MetaKeyProblems#toc15        ;; http://ergoemacs.org/emacs/emacs_hyper_super_keys.html      ;;                                                             ;; left command                                                (setq mac-command-modifier 'meta)                              ;; left option                                                 ;(setq mac-option-modifier 'alt)                               ;;xb                                                           ;; right command                                               (setq mac-right-command-modifier 'super)                       ;; right option                                                ;(setq mac-right-option-modifier 'hyper)                     -UUU:----F1  myinit.el      24% (40,0)    Git-master  (Emacs-LiFor information about GNU Emacs and the GNU system, type <f1> \C-a.                                                           -UUU:----F1  *scratch*      All (5,0)      (Lisp Interaction) 1File Edit Options Buffers Tools Lisp-Interaction Help          M-x                                                            M-x s                                                          M-x ss                                                         M-x ssh                                                        M-x ssh                                                        ssh arguments (hostname first):                                ssh arguments (hostname first): p                              ssh arguments (hostname first): pi                             ssh arguments (hostname first): pi                             Tramp: Opening connection for pi using scp...                  File Edit Options Buffers Tools Minibuf Help                   Opening connection for pi using scp... \                       File Edit Options Buffers Tools Complete In/Out Signals Help   ntrolPath='tramp.%C' -o ControlPersist=no -e none pi'          Waiting for prompts from remote shell... \                     Tramp: Waiting for prompts from remote shell...done            Tramp: Found remote shell prompt on `pi'                       Tramp: Opening connection for pi using scp...done              -UUU:----F1  *ssh pi*       All (1,0)      (ssh:run) 11:54AM 2.-UUU:**@-F1  *ssh pi*       Bot (11,0)     (ssh:run) 11:54AM 2.pi@192.168.1.80:~$                                             -UUU:**@-F1  *ssh pi*       Bot (11,19)    (ssh:run) 11:54AM 2.pi@192.168.1.80:~$ h                                           -UUU:**@-F1  *ssh pi*       Bot (11,20)    (ssh:run) 11:54AM 2.-UUU:----F1  *scratch*      All (5,0)      (Lisp Interaction) 1pi@192.168.1.80:~$ ho                                          -UUU:**@-F1  *ssh pi*       Bot (11,21)    (ssh:run) 11:54AM 2.-UUU:**@-F1  *ssh pi*       Bot (11,21)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ hos                                         -UUU:**@-F1  *ssh pi*       Bot (11,22)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ host                                        -UUU:**@-F1  *ssh pi*       Bot (11,23)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ hostn                                       -UUU:**@-F1  *ssh pi*       Bot (11,24)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ hostna                                      -UUU:**@-F1  *ssh pi*       Bot (11,25)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ hostnam                                     -UUU:**@-F1  *ssh pi*       Bot (11,26)    (ssh:run) 土  7  7 1Linux raspberrypi 4.14.34-v7+ #1110 SMP Mon Apr 16 15:18:51 BS\T 2018 armv7l                                                  The programs included with the Debian GNU/Linux system are fre\e software;                                                    the exact distribution terms for each program are described in\ the                                                           individual files in /usr/share/doc/*/copyright.                Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the ext\ent                                                            permitted by applicable law.                                   Last login: Sat Jul  7 11:53:12 2018 from 192.168.1.6          pi@192.168.1.80:~$ hostname                                    -UUU:**@-F1  *ssh pi*       Bot (11,27)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ hostname                                    -UUU:**@-F1  *ssh pi*       Bot (12,0)     (ssh:run) 土  7  7 1-UUU:**@-F1  *ssh pi*       Bot (13,0)     (ssh:run) 土  7  7 1-UUU:**@-F1  *ssh pi*       Bot (13,19)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ u                                           -UUU:**@-F1  *ssh pi*       Bot (13,20)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ un                                          -UUU:**@-F1  *ssh pi*       Bot (13,21)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ una                                         -UUU:**@-F1  *ssh pi*       Bot (13,22)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ unam                                        -UUU:**@-F1  *ssh pi*       Bot (13,23)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ uname                                       -UUU:**@-F1  *ssh pi*       Bot (13,24)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ uname                                       -UUU:**@-F1  *ssh pi*       Bot (13,25)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ uname -                                     -UUU:**@-F1  *ssh pi*       Bot (13,26)    (ssh:run) 土  7  7 1raspberrypi                                                    pi@192.168.1.80:~$ uname -a                                    -UUU:**@-F1  *ssh pi*       Bot (13,27)    (ssh:run) 土  7  7 1pi@192.168.1.80:~$ uname -a                                    pi@192.168.1.80:~$ uname -a                                    -UUU:**@-F1  *ssh pi*       Bot (14,0)     (ssh:run) 土  7  7 1-UUU:**@-F1  *ssh pi*       Bot (15,0)     (ssh:run) 土  7  7 1Find file in other window: /scp:pi:/home/pi/                   ;; This buffer is for notes you don't want to save, and for Li\sp evaluation.                                                 ;; If you want to create a file, visit that file with C-x C-f, ;; then enter the text in that file's own buffer.              Find file in other window: /scp:pi:/home/pi/                     -rw-------  1 pi   pi     456 Jul  7 11:54 .Xauthority       -UUU:----F1  *scratch*      All (5,0)      (Lisp Interaction) $-UUU:**@-F1  *ssh pi*       Bot (15,19)    (ssh:run) 土  7  7 1  -rw-------  1 pi   pi     456 Jul  7 11:54 .Xauthority       -UUU:%%@-F1  pi                  Top (5,45)     (Dired by name)I-search:                                                        drwxr-xr-x  5 pi   pi    4096 Feb 24 18:10 .cache            -UUU:%%@-F1  pi                  Top (5,45)     (Dired by name I-search: d                                                      drwxr-xr-x  5 pi   pi    4096 Feb 24 18:10 .cache            I-search: d                                                      drwxr-xr-x  5 pi   pi    4096 Feb 24 18:10 .cache              -rw-r--r--  1 pi   pi      62 Dec 30  2017 .gitconfig        -UUU:%%@-F1  pi                  Top (9,3)      (Dired by name I-search: de                                                     -rw-r--r--  1 pi   pi      62 Dec 30  2017 .gitconfig        I-search: de                                                     /scp:pi:/home/pi:                                              total 220                                                      drwxr-xr-x 18 pi   pi    4096 Jul  7 11:54 .                   drwxr-xr-x  4 root root  4096 Mar 31 21:00 ..                  -rw-------  1 pi   pi     456 Jul  7 11:54 .Xauthority         -rw-------  1 pi   pi   56871 Jul  7 11:53 .bash_history       -rw-r--r--  1 pi   pi     220 Nov 29  2017 .bash_logout        -rw-r--r--  1 pi   pi    3972 Feb  9 07:17 .bashrc             drwx------  4 pi   pi    4096 Feb 24 18:10 .config             -rw-r--r--  1 pi   pi      62 Dec 30  2017 .gitconfig          drwx------  3 pi   pi    4096 Feb  2 20:03 .gnupg              drwxr-xr-x  7 pi   pi    4096 Mar 12 18:59 .kodi               -rw-------  1 pi   pi     655 Jun  2 12:39 .lesshst          -UUU:%%@-F1  pi                  Top (11,34)    (Dired by name I-search: dev                                                    drwxr-xr-x 16 pi   pi    4096 Jul  1 13:52 dev               I-search: dev                                                  -UUU:%%@-F1  pi                  Bot (36,48)    (Dired by name   -rw-------  1 pi   pi     853 Feb 24 18:22 .xsession-errors    lrwxrwxrwx  1 pi   pi      16 Jun  1 21:10 _backup -> /mnt/s\da2/backup                                                       -rw-r--r--  1 pi   pi      26 Jun 29 19:50 alsaenv.sh          -rw-r--r--  1 pi   pi    3224 May 20 20:14 app.log             lrwxrwxrwx  1 pi   pi      17 Jul  1 14:36 backup -> /mnt/wh\ite/backup                                                       drwxr-xr-x  2 pi   pi    4096 Jul  1 14:34 bin                 drwxr-xr-x 16 pi   pi    4096 Jul  1 13:52 dev                 drwxr-xr-x  5 pi   pi    4096 Feb 24 09:26 download          Mark saved where search started                                  drwxr-xr-x  2 pi pi 4096 Jan  3  2018 duckdns                  drwxr-xr-x  2 pi pi 4096 Apr 14 20:44 kodipod                  -rw-r--r--  1 pi   pi     231 Jan  1  2018 keyadd.sh           -rw-r--r--  1 pi   pi    2164 Jun 30 14:59 pimic_client.py     -rwxr-xr-x  1 pi   pi      40 Jan 11 19:41 record.sh           drwxr-xr-x  2 pi   pi    4096 Jun  2 21:15 tmp               -UUU:%%@-F1  pi                  Bot (36,0)     (Dired by name)  drwxr-xr-x  2 pi pi 4096 Jan  3  2018 duckdns                -UUU:%%@-F1  dev                 Top (5,40)     (Dired by name)  drwxr-xr-x  3 pi pi 4096 Dec 31  2017 git                    -UUU:%%@-F1  dev                 Top (5,40)     (Dired by name I-search: r                                                      drwxr-xr-x  3 pi pi 4096 Dec 31  2017 git                    I-search: r                                                      /scp:pi:/home/pi/dev:                                          total 72                                                       drwxr-xr-x 16 pi pi 4096 Jul  1 13:52 .                        drwxr-xr-x 18 pi pi 4096 Jul  7 11:54 ..                       drwxr-xr-x  3 pi pi 4096 Dec 31  2017 git                      -rwxr-xr-x  1 pi pi 5882 Dec 31  2017 hello                    drwxr-xr-x  2 pi pi 4096 Dec 31  2017 install                  drwxr-xr-x 23 pi pi 4096 Jun 29 20:27 julius-4.4.2             drwxr-xr-x  2 pi pi 4096 Apr 14 20:44 kodipod                  drwxr-xr-x  9 pi pi 4096 Jun  1 19:49 movie_apache             drwxr-xr-x  3 pi pi 4096 Feb 13 20:05 openjtalk                drwxr-xr-x  9 pi pi 4096 Jun  2 12:34 peer                     drwxr-xr-x  6 pi pi 4096 Dec 31  2017 podcast_list           -UUU:%%@-F1  dev                 Top (6,4)      (Dired by name T 2018 armv7l GNU/Linux                                        pi@192.168.1.80:~$                                             -UUU:**@-F1  *ssh pi*       Bot (15,19)    (ssh:run) 土  7  7 1I-search: re                                                     drwxr-xr-x  7 pi pi 4096 Jul  1 12:26 remocon                I-search: re                                                     drwxr-xr-x  7 pi pi 4096 Jul  1 12:26 remocon                -UUU:%%@-F1  dev                 Bot (16,42)    (Dired by name I-search: rem                                                    drwxr-xr-x  7 pi pi 4096 Jul  1 12:26 remocon                I-search: rem                                                    drwxr-xr-x  7 pi pi 4096 Jul  1 12:26 remocon                -UUU:%%@-F1  dev                 Bot (16,43)    (Dired by name I-search: remo                                                   drwxr-xr-x  7 pi pi 4096 Jul  1 12:26 remocon                I-search: remo                                                   drwxr-xr-x  7 pi pi 4096 Jul  1 12:26 remocon                I-search: remov                                                Failing I-search: remov                                        Failing I-search: remove                                       -UUU:%%@-F1  dev                 Bot (16,44)    (Dired by name   drwxr-xr-x  5 pi pi 4096 Dec 31  2017 podcast_spider           drwxr-xr-x  7 pi pi 4096 Jul  1 12:26 remocon                  drwxr-xr-x  3 pi pi 4096 Apr 17 06:52 tmp                      drwxr-xr-x  6 pi pi 4096 Mar 31 18:51 usbdev                   drwxr-xr-x  3 pi pi 4096 Mar 31 20:53 usbdev_docker          -UUU:%%@-F1  dev                 Bot (16,0)     (Dired by name)  drwxr-xr-x  9 pi pi 4096 Jul  7 11:52 .git                     -rw-r--r--  1 pi pi   13 Jul  1 12:26 .gitignore             -UUU:%%@-F1  remocon             Top (5,40)     (Dired by name)  -rw-r--r--  1 pi pi   13 Jul  1 12:26 .gitignore               -rw-r--r--  1 pi pi  482 Jul  1 13:58 README.md              -UUU:%%@-F1  remocon             Top (6,40)     (Dired by name)  -rw-r--r--  1 pi pi  482 Jul  1 13:58 README.md                drwxr-xr-x  3 pi pi 4096 Jun  2 20:39 config                 -UUU:%%@-F1  remocon             Top (7,40)     (Dired by name)  drwxr-xr-x  3 pi pi 4096 Jun  2 20:39 config                   -rw-r--r--  1 pi pi  114 Dec 31  2017 install.sh             -UUU:%%@-F1  remocon             Top (8,40)     (Dired by name)  -rw-r--r--  1 pi pi  114 Dec 31  2017 install.sh               drwxr-xr-x  4 pi pi 4096 Jul  5 19:06 julius                 -UUU:%%@-F1  remocon             Top (9,40)     (Dired by name)  drwxr-xr-x  4 pi pi 4096 Jul  5 19:06 julius                 -UUU:%%@-F1  remocon             Top (10,40)    (Dired by name)  -rw-r--r--  1 pi pi  482 Jul  1 13:58 README.md              Tramp: Inserting `/scp:pi:/home/pi/dev/remocon/README.md'...   Inserting `/scp:pi:/home/pi/dev/remocon/README.md' \           Tramp: Encoding remote file `/scp:pi:/home/pi/dev/remocon/READ\ME.md' with `base64 <%s'...                                    Encoding remote file `/scp:pi:/home/pi/dev/remocon/README.md' \with `base64 <%s' \                                            Tramp: Inserting `/scp:pi:/home/pi/dev/remocon/README.md'...do\Local Ispell dictionary set to nil                             File Edit Options Buffers Tools Operate Mark Regexp Immediate S  /scp:pi:/home/pi/dev/remocon:                                  drwxr-xr-x  7 pi pi 4096 Jul  1 12:26 .                        drwxr-xr-x 16 pi pi 4096 Jul  1 13:52 ..                       drwxr-xr-x  9 pi pi 4096 Jul  7 11:52 .git                     drwxr-xr-x  4 pi pi 4096 Jul  5 19:06 julius                   -rw-r--r--  1 pi pi   87 Dec 31  2017 julius_manual.txt        -rw-r--r--  1 pi pi  407 Dec 31  2017 led-blink.py             drwxr-xr-x  3 pi pi 4096 Dec 31  2017 lirc                     -rwxr-xr-x  1 pi pi  135 Feb 22 08:20 rsync.sh               -UUU:%%@-F1  remocon             Top (7,0)      (Dired by name)-UUU:**@-F1  *ssh pi*       Bot (15,19)    (ssh:run) 土  7  7 1 Starting new Ispell process /usr/local/bin/ispell with default\ dictionary...                                                 Checking `vc-registered' for /scp:pi:/home/pi/dev/remocon/READ\ME.md... \                                                     Tramp: Checking `vc-registered' for /scp:pi:/home/pi/dev/remoc\on/README.md...done                                            Blocking call to accept-process-output with quit inhibited!!   File Edit Options Buffers Tools Markdown Text Help             -UUU:--@-F1  README.md      Top (1,0)     Git-master  (Markdownindividual files in /usr/share/doc/*/copyright.                -UUU:--@-F1  README.md      Top (1,0)     Git-master  (MarkdownLast login: Sat Jul  7 11:53:12 2018 from 192.168.1.6          Setup                                                          Setup                                                          -----                                                          -UUU:--@-F1  README.md      Top (2,0)     Git-master  (Markdown-----                                                          1. edit /etc/modules to add lirc_dev                           -UUU:--@-F1  README.md      Top (3,0)     Git-master  (Markdown1. edit /etc/modules to add lirc_dev                           -UUU:--@-F1  README.md      Top (4,0)     Git-master  (Markdown```                                                            -UUU:--@-F1  README.md      Top (5,0)     Git-master  (Markdown```                                                            lirc_dev                                                       -UUU:--@-F1  README.md      Top (6,0)     Git-master  (Markdownlirc_dev                                                       -UUU:--@-F1  README.md      Top (7,0)     Git-master  (Markdown-UUU:--@-F1  README.md      Top (8,0)     Git-master  (Markdown2. edit /boot/config.txt                                       -UUU:--@-F1  README.md      Top (9,0)     Git-master  (Markdown2. edit /boot/config.txt                                       -UUU:--@-F1  README.md      Top (10,0)    Git-master  (Markdown-UUU:--@-F1  README.md      Top (11,0)    Git-master  (Markdowndtoverlay=lirc-rpi,gpio_out_pin=27,gpio_in_pin18               -UUU:--@-F1  README.md      Top (12,0)    Git-master  (Markdowndtoverlay=lirc-rpi,gpio_out_pin=27,gpio_in_pin18               -UUU:--@-F1  README.md      Top (13,0)    Git-master  (Markdown-UUU:--@-F1  README.md      Top (14,0)    Git-master  (Markdown3. install lirc                                                -UUU:--@-F1  README.md      Top (15,0)    Git-master  (Markdown3. install lirc                                                -UUU:--@-F1  README.md      Top (16,0)    Git-master  (Markdown-UUU:--@-F1  README.md      Top (17,0)    Git-master  (Markdownsudo apt-get install -y lirc                                   -UUU:--@-F1  README.md      Top (18,0)    Git-master  (Markdownsudo apt-get install -y lirc                                   -UUU:--@-F1  README.md      Top (19,0)    Git-master  (Markdown-UUU:--@-F1  README.md      Top (20,0)    Git-master  (Markdown4. edit /etc/lirc/lirc_options.conf                            -UUU:--@-F1  README.md      Top (21,0)    Git-master  (Markdown4. edit /etc/lirc/lirc_options.conf                            5. copy remocon data                                           cp config/*.conf /etc/lirc/lircd.conf.d/                       -UUU:--@-F1  README.md      Top (22,0)    Git-master  (MarkdownEnd of buffer                                                  sh run.sh                                                      -UUU:--@-F1  README.md      Bot (28,0)    Git-master  (MarkdownMark set                                                       -UUU:--@-F1  README.md      Bot (48,0)    Git-master  (Markdown-UUU:**@-F1  README.md      Bot (49,0)    Git-master  (Markdown-                                                              -UUU:**@-F1  README.md      Bot (49,1)    Git-master  (Markdown--                                                             -UUU:**@-F1  README.md      Bot (49,2)    Git-master  (Markdown---                                                            -UUU:**@-F1  README.md      Bot (49,3)    Git-master  (Markdown----                                                           -UUU:**@-F1  README.md      Bot (49,4)    Git-master  (Markdown-UUU:**@-F1  README.md      Bot (50,0)    Git-master  (MarkdownT                                                              -UUU:**@-F1  README.md      Bot (50,1)    Git-master  (MarkdownTa                                                             -UUU:**@-F1  README.md      Bot (50,2)    Git-master  (MarkdownTak                                                            -UUU:**@-F1  README.md      Bot (50,3)    Git-master  (MarkdownTaka                                                           -UUU:**@-F1  README.md      Bot (50,4)    Git-master  (MarkdownTakas                                                          -UUU:**@-F1  README.md      Bot (50,5)    Git-master  (MarkdownTakash                                                         -UUU:**@-F1  README.md      Bot (50,6)    Git-master  (MarkdownTakashi                                                        -UUU:**@-F1  README.md      Bot (50,7)    Git-master  (MarkdownTakashi                                                        -UUU:**@-F1  README.md      Bot (50,8)    Git-master  (MarkdownTakashi M                                                      -UUU:**@-F1  README.md      Bot (50,9)    Git-master  (MarkdownTakashi Ma                                                     -UUU:**@-F1  README.md      Bot (50,10)   Git-master  (MarkdownTakashi Mas                                                    -UUU:**@-F1  README.md      Bot (50,11)   Git-master  (MarkdownTakashi Masu                                                   -UUU:**@-F1  README.md      Bot (50,12)   Git-master  (MarkdownTakashi Masuy                                                  -UUU:**@-F1  README.md      Bot (50,13)   Git-master  (MarkdownTakashi Masuya                                                 -UUU:**@-F1  README.md      Bot (50,14)   Git-master  (MarkdownTakashi Masuyam                                                -UUU:**@-F1  README.md      Bot (50,15)   Git-master  (MarkdownTakashi Masuyama                                               -UUU:**@-F1  README.md      Bot (50,16)   Git-master  (MarkdownTakashi Masuyama                                               -UUU:**@-F1  README.md      Bot (50,17)   Git-master  (MarkdownTakashi Masuyama ,                                             -UUU:**@-F1  README.md      Bot (50,18)   Git-master  (MarkdownTakashi Masuyama ,                                             -UUU:**@-F1  README.md      Bot (50,19)   Git-master  (MarkdownTakashi Masuyama <                                             Takashi Masuyama <                                             Takashi Masuyama < m                                           -UUU:**@-F1  README.md      Bot (50,20)   Git-master  (MarkdownTakashi Masuyama < ma                                          -UUU:**@-F1  README.md      Bot (50,21)   Git-master  (MarkdownTakashi Masuyama < mam                                         -UUU:**@-F1  README.md      Bot (50,22)   Git-master  (MarkdownTakashi Masuyama < mame                                        -UUU:**@-F1  README.md      Bot (50,23)   Git-master  (MarkdownTakashi Masuyama < mamew                                       -UUU:**@-F1  README.md      Bot (50,24)   Git-master  (MarkdownTakashi Masuyama < mamewo                                      -UUU:**@-F1  README.md      Bot (50,25)   Git-master  (MarkdownTakashi Masuyama < mamewot                                     -UUU:**@-F1  README.md      Bot (50,26)   Git-master  (MarkdownTakashi Masuyama < mamewoto                                    -UUU:**@-F1  README.md      Bot (50,27)   Git-master  (MarkdownTakashi Masuyama < mamewotok                                   -UUU:**@-F1  README.md      Bot (50,28)   Git-master  (MarkdownTakashi Masuyama < mamewotoko                                  -UUU:**@-F1  README.md      Bot (50,29)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@                                 -UUU:**@-F1  README.md      Bot (50,30)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@g                                -UUU:**@-F1  README.md      Bot (50,31)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@gm                               -UUU:**@-F1  README.md      Bot (50,32)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@gma                              -UUU:**@-F1  README.md      Bot (50,33)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@gmai                             -UUU:**@-F1  README.md      Bot (50,34)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@gmail                            -UUU:**@-F1  README.md      Bot (50,35)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@gmail.                           -UUU:**@-F1  README.md      Bot (50,36)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@gmail.c                          -UUU:**@-F1  README.md      Bot (50,37)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@gmail.co                         -UUU:**@-F1  README.md      Bot (50,38)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@gmail.com                        -UUU:**@-F1  README.md      Bot (50,39)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@gmail.com                        -UUU:**@-F1  README.md      Bot (50,40)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@gmail.com >                      -UUU:**@-F1  README.md      Bot (50,41)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@gmail.com >                      -UUU:**@-F1  README.md      Bot (50,42)   Git-master  (MarkdownTakashi Masuyama < mamewotoko@gmail.com >                      -UUU:**@-F1  README.md      Bot (50,43)   Git-master  (Markdown-UUU:**@-F1  README.md      Bot (51,0)    Git-master  (Markdownh                                                              -UUU:**@-F1  README.md      Bot (51,1)    Git-master  (Markdownht                                                             -UUU:**@-F1  README.md      Bot (51,2)    Git-master  (Markdownhtt                                                            -UUU:**@-F1  README.md      Bot (51,3)    Git-master  (Markdownhttp                                                           -UUU:**@-F1  README.md      Bot (51,4)    Git-master  (Markdownhttp:                                                          -UUU:**@-F1  README.md      Bot (51,5)    Git-master  (Markdownhttp:.                                                         -UUU:**@-F1  README.md      Bot (51,6)    Git-master  (Markdownhttp:..                                                        -UUU:**@-F1  README.md      Bot (51,7)    Git-master  (Markdownhttp:...                                                       -UUU:**@-F1  README.md      Bot (51,8)    Git-master  (Markdownhttp:/                                                         http://                                                        http://m                                                       http://ma                                                      -UUU:**@-F1  README.md      Bot (51,9)    Git-master  (Markdownhttp://mam                                                     -UUU:**@-F1  README.md      Bot (51,10)   Git-master  (Markdownhttp://mame                                                    -UUU:**@-F1  README.md      Bot (51,11)   Git-master  (Markdownhttp://mamew                                                   -UUU:**@-F1  README.md      Bot (51,12)   Git-master  (Markdownhttp://mamewo                                                  -UUU:**@-F1  README.md      Bot (51,13)   Git-master  (Markdownhttp://mamewo.                                                 -UUU:**@-F1  README.md      Bot (51,14)   Git-master  (Markdownhttp://mamewo.d                                                -UUU:**@-F1  README.md      Bot (51,15)   Git-master  (Markdownhttp://mamewo.dd                                               -UUU:**@-F1  README.md      Bot (51,16)   Git-master  (Markdownhttp://mamewo.ddo                                              -UUU:**@-F1  README.md      Bot (51,17)   Git-master  (Markdownhttp://mamewo.ddo.                                             -UUU:**@-F1  README.md      Bot (51,18)   Git-master  (Markdownhttp://mamewo.ddo.j                                            -UUU:**@-F1  README.md      Bot (51,19)   Git-master  (Markdownhttp://mamewo.ddo.jp                                           -UUU:**@-F1  README.md      Bot (51,20)   Git-master  (Markdownhttp://mamewo.ddo.jp/                                          -UUU:**@-F1  README.md      Bot (51,21)   Git-master  (Markdownhttp://mamewo.ddo.jp/                                          http://mamewo.ddo.jp/                                          http://mamewo.ddo.jp/                                          http://mamewo.ddo.jp/                                          http://mamewo.ddo.jp/                                          https://mamewo.ddo.jp/                                          https://mamewo.ddo.jp/                                          -UUU:**@-F1  README.md      Bot (51,22)   Git-master  (MarkdownSaving file /scp:pi:/home/pi/dev/remocon/README.md...          Tramp: Encoding local file `/var/folders/r1/d35rctmn1x70xnj0sy\_swlmc0000gn/T/tramp.47959xPF.md' using `base64-encode-region'\...                                                            Decoding remote file `/scp:pi:/home/pi/dev/remocon/README.md' \using `base64 -d -i >%s' \                                     Tramp: Decoding remote file `/scp:pi:/home/pi/dev/remocon/READ\ME.md' using `base64 -d -i >%s'...done                         Wrote /scp:pi:/home/pi/dev/remocon/README.md                   6. install webiopi                                             Run (julius listner and mic)                                   ----------------------------                                   1.                                                             export ALSADEV="plughw:1,0"                                    2.                                                             cd julius                                                      sh build.sh                                                    sh run.sh                                                      ----                                                           Takashi Masuyama < mamewotoko@gmail.com >                      -UUU:--@-F1  README.md      Bot (51,22)   Git:master  (Markdown(No files need saving)                                         -UUU:--@-F1  README.md      Bot (51,22)   Git:master  (Markdown                                                                                                                               y                                                              ye                                                             yes                                                           https://mamewo.ddo.jp/                                           yes                                                           Wrote /Users/tak/.emacs.d/tramp                                -UUU:--@-F1  README.md      Bot (51,22)   Git:master  (MarkdownProcess [v]     Status  Buffer          TTY          Command   *ssh pi*        run     *ssh pi*        /dev/ttys004 ssh pi    -UUU:%%@-F1  *Process List*   All (1,0)      (Process Menu) 土 Active processes exist; kill them and exit anyway? (yes or no)\✔ tak@mamec:~/Downloads                                        11:55 $  11:55 $ exit
1. M-x ssh pi でssh接続します 2. find-fileするとpiのディレクトリがdiredで見られるし、 ファイルも編集できちゃっています

利点

  • ssh バッファでtab補完が効きます
  • ssh バッファから簡単にファイルが開けます
  • リモートでも magit が使えます

手順

  1. ssl.el をインストールします
    • 方法1. ssh.el をコピーしてload-pathを設定します
    • 方法2. package-installを使用します
      1. M-x package-install
      2. ssh と入力してEnterキーを押します
  2. ssh先で 公開鍵認証 が使えるようにしておきます

使用方法

ファイルを開く

  1. M-x ssh
  2. ssh先のユーザ名とホスト名を username@hostname のように入力します
  3. \C-xf (find-file)
    ここで、trampを使ってssh先のファイルを開けます

バッファの切替

  • (ssh "username@hostname") をevalすると、すでにsshバッファがある場合は切り替わり、そうでない場合は
    sshバッファを作成するので、ファンクションキーに割り当てておくと便利です。
  • ibuffer でssh-modeのフィルターを作成すると便利かもしれないです。

不明点・問題点

  • trampモードで開いたファイルから、対応するsshバッファを簡単に開ける方法がわかっていないです
  • ssh先のユーザ名がローカルと異なる時には username@hostname のようにユーザ名を入力する必要がある
    • tramp での接続時にローカルでのユーザ名が使われてしまい、接続できません
  • sshを切った場合は、一度sshバッファを削除して再度、M-x ssh から開始する必要があります

trampからのshell (emacs26)

emacs26で試したところ sshで接続しているtrampのバッファでshellを実行すると、sshでshell実行されました。(どのemacsからなのか不明なのですが) piと言う名前で~/.ssh/config に登録してあるホストを使った実験結果。↓
term2svgでの録画

参考