当我已经打开了一个文件,想要打开另外一个文件,并且让它们在同一个窗口内纵向分屏。在vim中,可以使用命令:vs 文件名
实现。在emacs中,我认为使用的是以下命令:C-X 3
, C-X o
, C-X C-F
, 文件名
。我们能不能缩短这个过程呢?
C-h f find-file-other-window RET
这个命令默认情况下绑定到C-x 4 f
,但是你可以使用global-set-key
将其重新映射到C-x f
。
我认为仅使用find-file-other-window
并不完全符合您的要求。它使用display-buffer
,这不仅是垂直分割,而且尝试找到一个显示新缓冲区的位置。您可以像这样做:
(defun find-file-split-horizontally()
(interactive)
(flet ; temporary change
; display-buffer function to
; our needs
((display-buffer (buffer-or-name &optional not-this-window frame)
(select-window (split-window-horizontally)) ; select newly created window
(switch-to-buffer buffer-or-name)))
(call-interactively 'find-file-other-window)))
(defun switch-to-buffer-split-horizontally()
(interactive)
(flet
((display-buffer (buffer-or-name &optional not-this-window frame)
(select-window (split-window-horizontally))
(switch-to-buffer buffer-or-name)))
(call-interactively
;; use only one of these
'ido-switch-buffer-other-window
;;'switch-to-buffer-other-window
)))
这将始终尝试在水平方向上分割您当前的缓冲区。
find-file
的帮助页面可能应该提到相关函数。另外,记住C-h f find--file TAB TAB
可以自动完成所有可能的匹配,并且可以轻松查找与这些单词相关的内容。 - pmr