如何让emacsclient在同一窗口中的不同‘窗口’内打开每个文件

7
我尝试在终端中使用emacs客户端打开两个文件,比如'hello.txt'和'world.txt',并且我希望它们在同一个框架中以两个不同的窗口(在emacs中的意义上)打开。

我这样调用emacsclient

emacsclient -nw hello.txt world.txt

目前的情况是,一个emacsclient的窗口只显示了一个hello.txt文件。而另一个文件被打开到了一个不可见的缓冲区。
如果我使用emacs而不是emacsclient,就可以得到预期的结果(即两个文件在同一框架中以两个窗口的形式打开)。如何使emacsclientemacs的行为相同?
我并不是要求让emacsclient生成多个窗口,而是想寻找一种方法让emacsclient在同一框架内分割窗口打开多个文件。
3个回答

4

使用emacsclient和文件列表似乎无法直接实现此操作。

您可以通过向emacsclient传递lisp来实现相同的效果,尽管这变得有点冗长,但仍是一种解决方法。

emacsclient -t -e '(progn (find-file "file1")(find-file-other-window "file2"))' 

您可以将这些内容放入一个小的shell脚本ec2files.sh中,该脚本需要两个参数,并将它们插入到Lisp表单中。

或者编写一个defun函数,加载到emacs init中,该函数接受2个文件参数并打开它们。

(defun example-split-window-2-files (f1 f2) 
  (find-file f1)
  (find-file-other-window f2))

然后从emacsclient -e调用它。

emacsclient -t -e '(example-split-window-2-files "file1" "file2")'

4
变量 server-window 是您想要查看的内容。您可以将此变量设置为选择要打开的窗口的函数。
我在我的emacs配置中写下以下代码:
(setq server-window 'pop-to-buffer)

这将确保当您打开一个(单个)文件时,它会使用另一个窗口(如果需要则创建)来显示该文件。您需要找到或编写一个函数传递给server-window,以便为您显示文件而不断创建新窗口。


0

emacs 24.3.1 手册的第37.1节“调用`emacsclient'”中说:

您还可以使用 `-c' 和 `-t' 选项强制 emacsclient' 在图形显示器或文本终端上打开新帧。


这不是我要问的,我不想打开新的框架,而只是为每个文件打开一个单独的窗口。 - Ajoy

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