Emacs中快速访问远程主机的文件
作者: bood
工作中因为要经常用dired访问远程主机上的文件,每次都要输入一大堆的主机名和路径,比如为了访问远程机器home目录下的一个文件,我需要输入:
/bood@remote.host.com:~/working/filename.pl
每次输入一遍主机名不仅难记,而且效率十分低下。
后来发现了一段lisp程序,可以在Emacs中给那些常用的路径起别名,比如可以将
/bood@remote.host.com:~
命名为home,那么以后就可以直接用
@home/working/filename.pl
来访问上面的那个文件了。
最近我把这段程序整理成了一个单独的扩展,并做了一些改进(主要是让别名列表成为custom variable),就拿出来跟大家分享一下(这里下载)。
扩展使用起来很简单,下载以后放到Emacs的site-lisp目录下,然后修改你的.emacs,加入:
(require 'drkm-fav)
随后用setq命令便可以给路径定制自己的别名了,比如:
1 2 3 | (setq drkm-fav:favourite-directories-alist '(("home" . "/bood@remote.host.com:~") ("kernow-src" . "~/xslt/kernow/svn-2007-09-29/kernow/trunk/src/net/sf/kernow"))) |
这样就建立了home和kernow-src两个别名。
要是嫌编辑.emacs麻烦的话,也可以通过Emacs的Custom Variable机制来设置和保存drkm-fav:favourite-directories-alist(M-x customize-option),不过要注意的是设置的时候每个字符串都需要加上双引号。
最后附上我的一部分设置,大家可以参考其中的一些技巧,比如如何重用主机名:
1 2 3 4 5 | (setq drkm-userhost "bood@remote.host.com") (setq drkm-root (concat "/" (concat drkm-userhost ":"))) (setq drkm-fav:favourite-directories-alist (list (cons "home" (concat drkm-root "~")) (cons "root" drkm-root))) |

GD Star Rating
loading...
标签:Emacs, org, 配色loading...
Tramp路径中支持hostname可以变量代入就好了。
比如,我经常会连接
- /root@host1.domain.com:/var/log/messages
- /root@host2.domain.com:/var/log/messages
- /root@10.32.166.15:/var/log/messages
上面三个路径中,除了主机名不一样,其它的都一样。
[回复]
@filebat
感觉这个程序修改有可能实现的,改天研究下
[回复]
虽然不经常访问远程文件。
但是缩写的方法正好学习下。
[回复]
如果经常要访问远程主机上的文件,还不如用 sshfs mount 到本地目录
[回复]
没明白你的问题究竟是什么?我通常先打开一个远程机器上的已知文件,C-x C-f,你以前访问过的机器名 Emacs 会记住,可以自动补全的。 打开一个文件以后在 M-x dired 就是远程机器的目录了,Emacs 会跟踪的的访问路径的。不是很麻烦的。
[回复]
bood 回复:
八月 20th, 2010 at 9:08 上午
@小和平鸽,
但如果emacs重启了呢……
第一次输入主机名会比较长,比较费事儿
[回复]
小和平鸽 回复:
八月 20th, 2010 at 10:41 上午
@bood, 偶把 Emacs 23 的 daemon 重启了一下,然后重新打开 tivx24 上面的文件,Emacs 仍然可以自动补全机器名。截图在这里。 http://blogimg.chinaunix.net/blog/upfile2/100820183837.png 当然,以前我在 Windows 的 Cygwin 环境下的时候也遇到过用过一段时间以后,自动补全出现问题的情况。
[回复]
你好,我看了一下文中的方法,感觉非常好,但是我要上的ftp有密码,密码该加载哪里。doc已经访问不了了,可以给我发一份么?
[回复]
@duoduo
ftp的密码在第一次访问的时候会提示
可以发给你,但是你得告诉我你的邮箱……
[回复]
匿名 回复:
十月 26th, 2010 at 11:15 下午
@bood, 邮件已收到,谢谢,哈哈
[回复]