首页 > 初级, 小技巧 > Emacs中快速访问远程主机的文件

Emacs中快速访问远程主机的文件

2010年4月30日 ahei 发表评论 阅读评论

作者: 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)))
分享家:Addthis中国
GD Star Rating
loading...
Emacs中快速访问远程主机的文件, 8.8 out of 10 based on 5 ratings 标签:Emacs, org, 配色

相关日志

分类: 初级, 小技巧
  1. filebat
    2010年4月30日03:21 | #1

    Tramp路径中支持hostname可以变量代入就好了。

    比如,我经常会连接
    - /root@host1.domain.com:/var/log/messages
    - /root@host2.domain.com:/var/log/messages
    - /root@10.32.166.15:/var/log/messages

    上面三个路径中,除了主机名不一样,其它的都一样。

    [回复]

  2. 2010年4月30日03:41 | #2

    @filebat
    感觉这个程序修改有可能实现的,改天研究下 :)

    [回复]

  3. wgf4242
    2010年4月30日10:51 | #3

    虽然不经常访问远程文件。
    但是缩写的方法正好学习下。

    [回复]

  4. snlee
    2010年5月3日16:46 | #4

    如果经常要访问远程主机上的文件,还不如用 sshfs mount 到本地目录

    [回复]

  5. 小和平鸽
    2010年8月20日08:25 | #5

    没明白你的问题究竟是什么?我通常先打开一个远程机器上的已知文件,C-x C-f,你以前访问过的机器名 Emacs 会记住,可以自动补全的。 打开一个文件以后在 M-x dired 就是远程机器的目录了,Emacs 会跟踪的的访问路径的。不是很麻烦的。

    [回复]

    bood 回复:

    @小和平鸽,
    但如果emacs重启了呢……
    第一次输入主机名会比较长,比较费事儿

    [回复]

    小和平鸽 回复:

    @bood, 偶把 Emacs 23 的 daemon 重启了一下,然后重新打开 tivx24 上面的文件,Emacs 仍然可以自动补全机器名。截图在这里。 http://blogimg.chinaunix.net/blog/upfile2/100820183837.png 当然,以前我在 Windows 的 Cygwin 环境下的时候也遇到过用过一段时间以后,自动补全出现问题的情况。

    [回复]

  6. duoduo
    2010年10月26日16:30 | #6

    你好,我看了一下文中的方法,感觉非常好,但是我要上的ftp有密码,密码该加载哪里。doc已经访问不了了,可以给我发一份么?

    [回复]

  7. bood
    2010年10月26日16:46 | #7

    @duoduo
    ftp的密码在第一次访问的时候会提示
    可以发给你,但是你得告诉我你的邮箱……

    [回复]

    匿名 回复:

    @bood, 邮件已收到,谢谢,哈哈

    [回复]

  1. 2010年4月30日05:33 | #1
:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!: