Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在emacs中打开2个文件时,如何使它们并排显示?_Emacs_Dot Emacs - Fatal编程技术网

在emacs中打开2个文件时,如何使它们并排显示?

在emacs中打开2个文件时,如何使它们并排显示?,emacs,dot-emacs,Emacs,Dot Emacs,有时,我会使用两个文件从命令行启动emacs,如下所示: emacs foo.txt bar.txt 这将打开emacs窗口,垂直拆分: foo.txt ------- bar.txt 如何编辑.emacs文件,使其并排显示,如下所示: | foo.txt | bar.txt | 编辑:为了澄清,我知道如何在emacs启动后实现这一点(M-x 0、M-x 3,然后重新访问右侧窗口中的bar.txt)。我只希望emacs在启动时默认情况下并行拆分,所以我不必这

有时,我会使用两个文件从命令行启动emacs,如下所示:

emacs foo.txt bar.txt
这将打开emacs窗口,垂直拆分:

foo.txt
-------
bar.txt
如何编辑.emacs文件,使其并排显示,如下所示:

        |
foo.txt | bar.txt
        |

编辑:为了澄清,我知道如何在emacs启动后实现这一点(M-x 0、M-x 3,然后重新访问右侧窗口中的bar.txt)。我只希望emacs在启动时默认情况下并行拆分,所以我不必这样做。

使用水平拆分窗口。

使用
M-x水平拆分窗口
Ctrl-x 3
以下内容(添加到.emacs中)使窗口拆分默认结果为并排缓冲区(而不是一个在另一个之上):

当您运行命令(如
findfileotherwindow
(Ctrlx4f))时,此默认值也将适用


(另一方面,手动分割窗口以获得两个并列的缓冲区,考虑回答).< /P> < P>这是一个将一对垂直窗口变成一对水平窗口的函数:

(defun 2-windows-vertical-to-horizontal ()
  (let ((buffers (mapcar 'window-buffer (window-list))))
    (when (= 2 (length buffers))
      (delete-other-windows)
      (set-window-buffer (split-window-horizontally) (cadr buffers)))))
要在启动时自动执行此操作,请将此函数添加到
emacs启动挂钩中

(add-hook 'emacs-startup-hook '2-windows-vertical-to-horizontal)

这对我很有效。使用命令行中的-f函数名,让它根据需要设置emacs分割屏幕工作区。这为我提供了一个2 x 2的财务文件网格,我每天都会更新这些文件,并将光标设置在末尾的相应窗口上。我将其作为别名保存到.bashrc,这样我就可以用一个命令(doc\u financial)将其提取出来

Ctrl-x2 上下分窗

缓冲区1(以上)
缓冲区2(下方)

Ctrl-x3 并排开窗

缓冲器1(左)|缓冲器2(右)

C-M-v
滚动其他窗口

我知道如何在emacs启动后手动执行此操作;我只是希望emacs在打开多个文件时默认使用并排拆分。编辑问题以澄清。我只是问了一个非常类似的问题,得到了一个答案:享受。我最初选择了一个@Huitseek的答案,因为它简单,但它有一个缺点。例如,当emacs临时拆分一个窗口以显示可能的文件名选项卡完成情况时,它将并排拆分当前窗口。当当前窗口只有80个字符长时,这是非常可怕的。Sean的回答是,当您在emacs启动时打开多个文件时,会将窗口并排拆分,但在其他情况下,emacs会通过垂直拆分当前窗口来保留其打开临时缓冲区的通常行为。类似于
“将垂直拆分转换为水平拆分”的小注释
避免出现给定lisp检查程序的警告可能很好。这非常有效,应该是公认的答案。谢谢现在我只需要去掉在下半部分打开的scratch buffer窗口。六年前的答案对我来说在Emacs 25.1.1上有效。内联文档说,这并不总是有效,这取决于拆分窗口的当前状态。更喜欢垂直或水平拆分需要详细或清晰
;; 15-Oct-20  open first file in left window
(defun my-startup-layout ()
  (let ((buffers (mapcar 'window-buffer (window-list))))
    (when (= 2 (length buffers))
      (delete-other-windows)
      (set-window-buffer (split-window-horizontally) (cadr buffers))))
)

(add-hook 'emacs-startup-hook 'my-startup-layout)
(add-hook 'emacs-startup-hook 'next-multiframe-window)
;; end of customization to open first file on left
;;
alias doc_financial='emacs -nw financial_accounts.txt -f split-window-horizontally financial_budget.txt -f split-window-vertically financial_taxes.txt -f other-window -f split-window-vertically financial_tasks.txt -f other-window -f other-window -f other-window'
;; 15-Oct-20  open first file in left window
(defun my-startup-layout ()
  (let ((buffers (mapcar 'window-buffer (window-list))))
    (when (= 2 (length buffers))
      (delete-other-windows)
      (set-window-buffer (split-window-horizontally) (cadr buffers))))
)

(add-hook 'emacs-startup-hook 'my-startup-layout)
(add-hook 'emacs-startup-hook 'next-multiframe-window)
;; end of customization to open first file on left
;;