当前位置:  开发笔记 > 运维 > 正文

如何使用Cx k来杀死在服务器模式下打开的Emacs缓冲区?

如何解决《如何使用Cxk来杀死在服务器模式下打开的Emacs缓冲区?》经验,为你挑选了3个好方法。

我使用Windows批处理文件使用emacsclientw.exe在已经运行的Emacs实例中打开文件.但是,以这种方式打开的任何文件都是在服务器模式下打开的,这意味着我必须使用Cx#来杀死它,而不是通常的Cx k.我该如何改变这种行为?



1> 小智..:

我的解决方案是重新绑定它(实际上是Mw):

(lambda ()
  (interactive)
  (if server-buffer-clients
      (server-edit)
    (kill-this-buffer)))

[编辑:现在已经阅读了服务器编辑的代码,最好使用服务器完成(取决于你想要的).server-edit会将您切换到服务器编辑的缓冲区(如果仍然存在),但服务器完成只会切换到下一个缓冲区.您还可以使用server-done的输出来查看缓冲区是否实际被杀死(如果文件在调用emacsclient之前打开则不是这种情况)然后如果没有则将其终止.或者使用其他地方建议的server-kill-buffer.



2> p4bl0..:

以下是我在.emacs中执行此操作的内容:

(add-hook 'server-switch-hook 
  (lambda ()
    (local-set-key (kbd "C-x k") '(lambda ()
                                    (interactive)
                                    (if server-buffer-clients
                                        (server-edit)
                                      (ido-kill-buffer))))))

就像这个Cx k工作时常用的方式当我没有从emacsclient找到一个文件(对我来说就是ido-kill-buffer),如果我正在使用emacsclient,如果客户端正在等待,Cx k会进行服务器编辑,或者运行ido-kill-buffer(如果我使用了emacsclient -n).



3> Joe Casadont..:

使用:

D:\> emacsclientw -n foo.txt

-n说"没有等待".这是关于RELEASE(以及许多先前版本,IIRC)的2008-03-26的GNU Emacs 22.2.1(i386-mingw-nt5.1.2600).

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有