1

假设我有两个文本文件A.txtB.txt. 我选择使用 Emacs 打开这两个

emacs -no-splash -mm A.txt B.txt

现在框架被垂直分成两部分,文件 A 显示在左侧窗口中,文件 B 显示在右侧窗口中。但是文件 B 是由 Emacs 自动选择的。C-x o我可以通过输入或将该点移动到另一个窗口ESC-: (other-window 1)。但我想自动执行此操作,例如在命令行或.emacs文件中。

我试过了

emacs -no-splash -mm --eval `(other-window 1)` A.txt B.txt

但它没有用..

4

5 回答 5

2

以下似乎有效:输入.emacs

(add-hook 'emacs-startup-hook '(lambda () (other-window 1)))
于 2013-08-14T12:22:14.257 回答
1

将以下内容放入您的~/.emacs文件中:

(add-hook 'emacs-startup-hook '(lambda () (select-first-buffer-in-list command-line-args)))

(defun select-first-buffer-in-list (list)
  (let (buffer)
    (while list
      (if (setq buffer (get-file-buffer (car list)))
      (progn (select-window (get-buffer-window buffer))
         (setq list nil))
    (setq list (cdr list))))))

它将检查哪些命令行参数对应于缓冲区。它选择一个显示第一个此类参数的缓冲区的窗口。

于 2013-08-14T11:33:55.627 回答
0

您是否有理由不想只是在命令行上反转文件名的顺序?

于 2013-08-14T18:10:24.810 回答
0

与命令行参数的顺序无关,这种方法找到最左边、最上面的窗口并选择它。将以下代码放入您的 .emacs 文件中:

(add-hook 'emacs-startup-hook '(lambda () (select-upper-left-window)))

(defun select-upper-left-window ()
  (let (window)
    (while (setq window (window-in-direction 'above nil t))
      (select-window window))
    (while (setq window (window-in-direction 'left nil t))
      (select-window window))))
于 2013-08-14T11:48:00.810 回答
0

这将保留一个带有“B.txt”的窗口

emacs --find-file A.txt B.txt -Q -eval "(delete-other-windows)"
于 2013-08-14T11:50:32.117 回答