masablog

Keep it simple, stupid

helm-tramp を作った

tech

自分の emacs でサーバーのファイルを快適にいじりたい


以前 peco から emacs の tramp を呼び出してサーバーでも自分の emacs を使う方法を書いた。
peco バージョン

でも、emacs でサーバーのファイルをいじるのに peco の力を借りているのは何か変だし、
terminal に移動しないで emacs だけでできるようにしたかったから
helm で tramp ごしに ssh するやつを書いた1
トランプが大統領になったから思いついたわけではない。

github

使い方


emacs でおもむろに M-x helm-tramp すると

~/.ssh/config を読み込んでよしなにサーバーのリストを出してくれる

helm インターフェースで絞り込んで選択すると

選択したサーバーにつながる

sudo がついてるリストを選択すると root でサーバーにつながるので2

サーバーの nginx.conf を君の emacs で編集することができる!
これでサーバで vim を立ち上げなくてすむ。
vim が嫌いなのではない3
カスタマイズできないサーバーの vim が嫌いなのだ4
サーバーで emacs -nw だと自分の emacs は使えないしね。
また、わざわざ emacs 上で tramp の長いコマンドを打つ必要もなくなった。

作業が終わったら M-x tramp-cleanup-all-buffers
で tramp 関係のバッファーをきれいにすることをお忘れなく
自分は tramp-cleanup-all-buffers が覚えられないので
defalias で exit-tramp という別名のコマンド名をつけている。

インストール


MELPA からインストールできます。
el-get は pull request したのでそのうちできるようになるでしょう。

設定


init.el などに

(setq tramp-default-method "ssh")
(defalias 'exit-tramp 'tramp-cleanup-all-buffers)
(define-key global-map (kbd "C-c s") 'helm-tramp)

tramp の設定など


以下の設定などをしておくと幸せになれるかもしれない
tramp ごしに backupfile や lock file などを作るとややこしいし、
ネットワークを無駄に使うので遅くなるから無効にする。

;; Do not make a backup file like *.~
(setq make-backup-files nil)
;; Do not use auto save
(setq auto-save-default nil)
;; Do not create lock file
(setq create-lockfiles nil)

サーバのデフォルトシェルは zsh にしているが
tramp では bash のほうがトラブルが少なく安定している

;; Connect tramp with bash
(eval-after-load 'tramp '(setenv "SHELL" "/bin/bash"))

   


  1. サーバーの作業は ansible とか chef とか itamae でやれよと言われそうなので書いておくと、ansible のレシピを作るときにサーバーのファイルをいじる必要がある。ansible-playbook をつくるための ansible-playbook は存在しない。そんな夢のような ansible-playbook があってもサーバーをいじりたいのに変わりはない [return]
  2. .ssh/config にかかれている user が sudo できない場合はつながりません [return]
  3. 実際に neovim も結構弄って使っている [return]
  4. 普通サーバーの.vimrc を勝手に変更できないと思う [return]

8 Feb 2017 #emacs #linux #Archlinux

このエントリーをはてなブックマークに追加