在emacs的多窗口状态下,可以随心所欲地打开一个一个目录,找到希望的文件,并且把文件打开游览或者编辑。这些都比较便利。 在有多个窗口存在的情况下,如果在一个目录中选择好了文件,键盘输入一个小写的o,文件就会在另外一个窗口中打开。 可是,究竟是在哪个窗口中呢?结果并不确定,emacs根据这些窗口的一个先后序列,自动确定目标窗口。

然而,有的时候,希望指定某一个窗口(比如屏幕上最大的一个窗口),用于游览和编辑选定的文件。参考了一些网上的文章,写了下面的elisp片段,只要复制粘贴到配置文件.emacs文件中,就可以实现在指定的窗口中打开文件了。:)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(global-set-key (kbd "<f8>") 
    (lambda () (interactive) 
               (progn (message "Current windows is assigned.") 
                      (setq assigned-window (selected-window))
               )
    )
)
 
(eval-after-load 'dired 
    '(define-key dired-mode-map (kbd "\C-o") 
        (lambda () (interactive) 
                   (let ((target-window assigned-window)) 
                        (set-window-buffer target-window 
                            (find-file-noselect (dired-get-file-for-visit))
                        )
                        (select-window target-window)
                   )
        )
     ) 
)

使用的时候,先指定一个窗口,作为游览和编辑文件用的目标窗口。具体做法:选择一个窗口,然后按 F8 。 然后,就可以在各个目录中,选择一个文件,按 C-o , 这个选择好的文件,就会在已经指定好的目标窗口中打开了。

参考文章:

扩展和联想:

访客的留言(5)

  1. 自从工作后就没来过了,今天偶然来访,越来越好了。

  2. assigned-window 这个变量是全局的吗?

  3. 谢谢光临,assigned-window是不是全局变量,还真没有深究过。从使用来看,姑且算是吧。

欢迎留言