Tramp helm interface for ssh server and docker and vagrant
M-x helm-tramp
Display server list from your ~/.ssh/config with helm interface.
Filter by helm.
You can connect your server with tramp.
Selecting the list with sudo will lead to the server as root. Selecting the list of '/sudo:root@localhost:/' will open file at localhost as root.
You can edit your server's nginx.conf on your emacs!
If you are using docker-tramp, docker is also supplemented. If you are using vagrant-tramp, vagrant is also supplemented.
You can edit docker container on your emacs!
helm-tramp-quit
When you finish editing nginx.conf you clean the tramp buffer with helm-tramp-quit
command.
- Emacs 24.3 or higher
- helm 2.0 or higher
You can install helm-tramp.el
from MELPA with package.el
(M-x package-install helm-tramp
).
You can install docker-tramp.el
from MELPA with package.el
(M-x package-install docker-tramp
).
If you use Emacs version >= 29.0.60 then docker-tramp is no longer necessary as this functionality is built-in to Tramp.
You can install vagrant-tramp.el
from MELPA with package.el
(M-x package-install vagrant-tramp
).
I recommend you are going to install exec-path-from-shell.
(setq tramp-default-method "ssh")
(define-key global-map (kbd "C-c s") 'helm-tramp)
(add-hook 'helm-tramp-pre-command-hook '(lambda () (global-aggressive-indent-mode 0)
(projectile-mode 0)
(editorconfig-mode 0)))
(add-hook 'helm-tramp-quit-hook '(lambda () (global-aggressive-indent-mode 1)
(projectile-mode 1)
(editorconfig-mode 1)))
Setting hook that turn off slow extensions when you execute helm-tramp.
Setting hook that turn on extensions when you execute helm-tramp-quit
command.
If you don't make a backup files and lockfiles at remote server, it will be saved faster.
(setq make-backup-files nil)
(setq create-lockfiles nil)
Besides ~/.ssh/config, you can add connections manually.
(setq helm-tramp-custom-connections '(/ssh:domain|sudo:user@localhost:/))
Example when adding more than two connections manually.
(setq helm-tramp-custom-connections '(/ssh:domain|sudo:user@localhost:/ /ssh:domain2|sudo:user@localhost:/))
If the shell of the server is zsh it is recommended to connect with bash.
(eval-after-load 'tramp '(setenv "SHELL" "/bin/bash"))
If you want to specify the user name to connect with docker-tramp.
(setq helm-tramp-docker-user "username")
If you want to specify multiple user name list to connect with docker-tramp.
(setq helm-tramp-docker-user '("username1" "username2" "username3" "username4"))
If you want to change initial directory when connecting with /sudo:root@localhost:.
(setq helm-tramp-localhost-directory "/root")
In addition to normal .ssh/config, it also supports the following format.
~/.ssh/config
Include conf.d/work
Include conf.d/personal
~/.ssh/conf.d/work
Host instance
HostName ************
User ************
Host archtest
HostName ************
User ************
Host debiantest
HostName ************
User ************
Host centostest
HostName ************
User ************
~/.ssh/conf.d/personal
Host myserver
HostName ************
User ************
Host myhost
HostName ************
User ************
Below is not support
~/.ssh/config
Include conf.d/**
You can use it as follows.
(setq helm-tramp-control-master t)
Set ~/.ssh/config as below
Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
ControlPersist 30m
ServerAliveInterval 60
Execute the ssh command as follows
~/.ssh/[email protected] will be generated automatically. Even if there is no connection setting in ~/.ssh/config, helm-tramp can complement like bellow.
/ssh:[email protected]:
/ssh:[email protected]|sudo:[email protected]:/