如何通过eshell在Emacs中打开文件?

46

在eshell中是否有打开另一个缓冲区中的文件的命令?

5个回答

59

您可以直接调用elisp函数。因此,要打开文件,请在文件名上调用find-file 。示例:

~ $ ls
myfile
~ $ (find-file "myfile")

圆括号和引号是可选的,所以这也可以工作:

~ $ find-file myfile

1
我认为这并没有真正回答“意思”问题,但它回答了所问的问题。我的意思是,找到这个问题的人可能正在寻找一个命令行命令来在eshell中输入,也许是因为他们不想使用C-x C-f,出于任何原因。 - Zelphir Kaltstahl
2
我通常将emacs分成两个窗口,并希望在另一个窗口中打开文件,而不是替换我的eshell会话:find-file-other-window myfile - Nick

16
在eshell中,使用查找文件命令时不需要使用完整路径。按下C-x C-f与输入find-file相同,并且eshell将目录设置为当前正在浏览的目录。这对我来说比使用ansi-term更有优势。试一试。

7

就像ataylor和ryan kung之前提到的那样,find-file基本上可以做到这一点。

$ find-file myfile

但是,使用eshell本身,您还可以设置更短的别名:

$ alias ff 'for i in ${eshell-flatten-list $*} {find-file $i}'

(而且eshell会永久地记住它)。所以从现在开始,你只需要输入以下内容:
$ ff myfile

感谢这篇教程,使得我更好地理解了EshellAlias。


另一种创建ff别名的方法: alias ff 'find-file $1' - g-gundam

2

elisp函数可以直接在eshell中使用,您可以尝试:

find-file <filename>

0
为什么要使用eshell?使用“C-x f”并输入文件位置。

1
嗯,问题就是我不想输入整个路径,因为我已经在shell的某个位置了。不过我猜,在我的emacs之旅中,总会用到dired。以一种“指挥官的方式”(http://www.emacswiki.org/emacs/Sunrise_Commander)使用它。 - hks
1
我认为如果你尝试一下,你会发现'C-x C-f'实际上会在你正在浏览的目录中打开。此外,你还将获得ido自动完成功能! - jhau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接