我希望在拆分窗口(C-x 3
或C-x 2
)后能够自动到达新打开的缓冲区(当前缓冲区除外)中的光标。我怎样才能实现这种行为?
问问题
23510 次
6 回答
67
您可以使用C-x o
. 至于自动执行此操作,我认为没有现有的命令。
于 2011-06-24T08:02:53.940 回答
39
你可以这样做:
(global-set-key "\C-x2" (lambda () (interactive)(split-window-vertically) (other-window 1)))
(global-set-key "\C-x3" (lambda () (interactive)(split-window-horizontally) (other-window 1)))
在 Emacs 24.3.1 中,如果您1
更改0
.
于 2011-06-24T08:45:15.680 回答
14
!!!不要使用这个答案!!! - 正如评论中指出的那样,建议split-window
可能会导致不良的副作用。
我推荐Bozhidar Batsov的答案。
将以下内容放入您的 .emacs 文件中:
(defadvice split-window (after move-point-to-new-window activate)
"Moves the point to the newly created window after splitting."
(other-window 1))
于 2011-06-24T08:59:08.010 回答
3
除了使用C-x 2or手动分割帧C-x 3外,缓冲区有时也会自动“弹出”。默认情况下,这些也未选中/处于活动状态。
这可以通过更改用于拆分窗口的函数来解决。它split-window-sensibly
默认设置为,但您可以将其设置为您自己的函数,该函数调用split-window-sensibly
然后选择缓冲区。
*Completions*
不幸的是,当您点击迷你缓冲区时,这会产生选择缓冲区的副作用TAB。因此,值得检查一下 minibuffer 是否处于活动状态并且在这种情况下没有切换。我敢打赌还有其他这样的不受欢迎的情况。当我找到它们时,我会尝试更新这篇文章。
;; after splitting a frame automatically, switch to the new window (unless we
;; were in the minibuffer)
(setq split-window-preferred-function 'my/split-window-func)
(defun my/split-window-func (&optional window)
(let ((new-window (split-window-sensibly window)))
(if (not (active-minibuffer-window))
(select-window new-window))))
(适用于 Emacs 24.5.1。)
于 2015-10-09T23:18:21.020 回答
1
我想到什么时候你想在 a 之后跟随窗口split-window
是当它具有相同的缓冲区时,如下面的代码:
(defun split-window--select-window (orig-func &rest args)
"Switch to the other window after a `split-window'"
(let ((cur-window (selected-window))
(new-window (apply orig-func args)))
(when (equal (window-buffer cur-window) (window-buffer new-window))
(select-window new-window))
new-window))
(advice-add 'split-window :around #'split-window--select-window)
简单的
于 2016-12-08T06:49:17.027 回答
0
Cx o 将帮助您切换到“其他”缓冲区。
于 2021-08-10T23:53:45.633 回答