正如 Emacs 声称的那样:
Warning: due to a long standing Gtk+ bug
http://bugzilla.gnome.org/show_bug.cgi?id=85715
Emacs might crash when run in daemon mode and the X11 connection is unexpectedly lost.
Using an Emacs configured with --with-x-toolkit=lucid does not have this problem.
("emacs")
时不时 (也不经常,好几天出现一次) 会定格,快捷键无效,新开 emacsclient 照旧,除非重启 Emacs server. 倒也没什么大不了的,在 Emacs 23 也有这个问题。
我就是想知道,大家编译时,除了选择 GTK+ , 在 Linux 下,大家都在用哪一个??
@skandhas, @dotian, @yedingding, @Guest, @willmouse , @tudou, @dotnil @nouse, @sectic, @ugoa, @nuclearkitten @bin @ranmocy @reus @lilu @liuhui998 @willmouse @franky_xhl @hbin @zealinux @Asakawa @shouya
BTW: 我记得我试过 lucid,, 貌似问题更多 ?
Emacs 支持参数如下:
--with-x-toolkit=KIT use an X toolkit (KIT one of: yes or gtk, gtk3,
lucid or athena, motif, no)
--with-x-toolkit=lucid 有用吗?估计也没戏?
我个人是比较支持使用没有 GUI 的 emacs 和 vim 的,我都是在 terminal 下用 emacs。
Terminal 下也没什么不妥,就是有些快捷键 (个人特殊的), 在终端下面,好像有具体的绑定,无法单独使用。
另外,习惯问题吧,我觉得使用 GUI 可以更好的发挥 deamon 的效果,这点应该没有异议吧?
你们使用 Terminal, 习惯上应该是 大部分 Emacs 操作 都在同一个 Emacs 界面 下面运行的吧?要大量的借助 ido, helm 之类的软件,切换文件什么的。我是经常运行一大堆 Emacs GUI (frame), 然后 Alt + Tab 切换 ( Windows 过来的习惯 ), 当然 ido 也用。
总之我觉得在 Terminal 下使用 Emacs, 纯粹发挥不出来 Emacs Server 的好处,和在 Windows 下使用 Emacs 基本上没有啥差别,要开一个新的 Emacs 界面,还得首先开一个新的 Terminal, 是这样的吧?
我估计你们都是 Emacs 老用户吧,应该在 Emacs 22 的时候就在用了 (Emacs 22 不支持 daemon) , 所以会有现在的习惯,不知道我猜测的对吗?
然 Emacs 个人使用方式非常多样化,不过咱们大家还是应该多多沟通呀,上次其他帖子中 @reus 的提示,帮我解决了 shell-mode 下的几个大问题。
#7 楼 @zw963 Emacs Server 在终端下没啥问题啊?有啥问题?
操作多个文件要不然用 Buffer,要不然拆窗口。
终端我都是只开一个的,用 tiling window,现在用的 http://www.brain-dump.org/projects/dvtm/
dvtm 一般分 2-3 个,有时候也在多个窗口中同时运行 emacs
没问题呀。可是无法完全发挥 Server 的优势,如果不是 Terminal, 也就用不到 dvtm 之类的东西了。
不过只开一个终端也有好处,就是不太乱,像我,有时候在一个桌面下开 EmacsClient 太多,头就晕了。
#10 楼 @reus 我最近才开始用 tabbar, 不过只是在 shell-mode 下 才开启。换多个 shell 方便一些。
对了,问下你们,在 X-windows 下,用一个快捷键,将当前打开的所有 Windows , 上下对齐重排,或者左右重排,类似的软件叫什么。最好是独立于 具体的 Windows 管理器,就像 Xbindkeys 一样,不管 KDE, 还是 Gnome, 又或者 XFCE, 都可以用。
貌似你说的那个 awesome 应该就是,我曾经想安装,不过貌似 Slackware 不满足的依赖太多了... 我不想因为这个小工具,再装一堆东西,呵呵,所以没装。
#14 楼 @zw963 awesome 是个完整的 tiling wm 而不是你期望的独立于 wm 的小工具。
http://dwm.suckless.org/ 这个应该是依赖最少的 tiling wm 了吧...
#18 楼 @reus
个人表示,只要找对E文的关键字
, Google 结果就没有压力...
有时候,找关键字不是那么容易呀。毕竟又不是中文,就算中文,还不一定找到呢。
#19 楼 @doitian 好一阵子都常见你上线,貌似最近有空呀?
正好向几位请教一个还算蛮棘手的问题:@willmouse @doitian @reus
现在我 C-w 快捷键,是复制内容到 secondary-region-ring,(就是和 kill-ring 一样的另一个 ring) 这其中使用了一个插件叫做:second-sel.el 来实现的一个 ring, 之所以这样绑定,是因为:C-w 之后,可能还会有 backward-kill-word, kill-line 之类的操作,这个时候,我可以不受干扰的通过一个自定义快捷键 C-M-y, 来直接粘帖 secondary-region
中的内容。
现在问题是:secondary-region-ring, 只要一退出 buffer, 再重新打开,ring 里面的内容就没有了。有时候,我希望复制一段内容到 second-region-ring 当中,哪怕我退出 buffer, 但是在稍后的其他新打开的 buffer 当中,都可以被 反复的 通过 C-M-y 粘帖。
反正就这么个功能,正常的删除,粘帖,就用 kill-ring, 但是最好有一个 其他的 (全局的)ring, 专门使用 C-M-y 来粘帖, 目前我用的这个 second-sel.el 中,这个 secondary-region-ring 不是全局的。只要一退出 buffer, 内容就消失了。
我要解决的问题是:
如果我希望更改 second-sel.el , 将那个 local ring 改为 global ring , 思路该如何解决?(最好谁有空帮我改下也行,如果能实现的话)
类似需求你们是如何处理的?是否有其他插件?或者自己写的插件?我想遇到一个 需要反复粘帖的情形,没有人愿意没完没了的 M-y 去吧?
写了,等会儿我挨个儿试一遍,呵呵。
我其实并不是要一个完整的 Windows Manager, 我现在用 XFCE 挺好,我其实只是想有个办法,让当前窗口 左右重排,上下重排,来个预览啥的。
没有遇到这个问题,因为我没有用 daemon mode,一般 Emacs 开在那就不会关了;second-region-ring 同样也没有用过,如果需要这些功能,可以先向组件作者反馈,如果没答复,就只好自己看 .el
试试加上这个功能啦;反复粘贴可以使用 C-u [num] M-y 来搞定吧,跟 Vim 的 normal mode 里按 [num] p 是一样的
突然发现@zw963 在给 rinari 提交代码! https://github.com/eschulte/rinari/commit/4097c7eae703683b4a843e7fea38d4a9e2675804#rinari.el 顿时高山仰止啊 orz。
嘿,我在 21 楼 说的问题,不知道描述清楚没有?
不知道能否通过改 second-sel 源码实现一个全局的 secondary-kill-ring ?
你如果在 Window 下用,Emacs Server 是无效的。
如果在 Linux 或 Mac 下,Emacs Server 就是先启动一个 Emacs Deamon, 然后稍后运行 Emacs 不是通过 Emacs
这个命令了,因为 Emacs 作为一个 Deamon
已经被启动了,只需要运行任意多个 emacsclient
连接到那个 Emacs server 就可以启动一个 Emacs 窗口,最大的优势是:秒开, 速度可比 Vim 快多了。
Emacs23 之前最让人诟病的一个原因是 Emacs 启动慢,不过现在变成优点了. 前面讲的不准确,之前这个最大的缺点在 Emacs23 之后就不再存在了,相反,因为 daemon 的缘故,启动速度非常快,反倒成为 Emacs 的优点了
#22 楼 @zw963 唉,Awesome 一旦拥有别无所求⋯⋯我当年用 Arch 的时候就是为了尝试 Awesome。如果 OSX 有办法自动 tiling windows 我就再也不会尝试 Linux 了⋯⋯ 现在只有还算可以的半自动替代方案。
#24 楼 @doitian 搜索这种大众名字的可以加 Linux,X11 等辅助关键词
#33 楼 @tudou 使用 server-daemon 记得要将 frame 相关的代码放到 after-make-frame-functions 的 hook 中去。很多命令都是对当前使用的 frame 操作的,而 init 代码只会在启动的时候执行,加到 hook 中去才能在新建 frame 的时候对新 frame 生效。 你可以参考我的配置 https://github.com/ranmocy/emacs_config/blob/master/customizations/ui/set-x.el
我试了好多,最后才明白过来,原来 awesome 之类的东西根本就是用来取代其他 Windows Manager 的。所以我还是觉得算了,就用 XFCE4 , 虽然 Thunar 稍显简单,就这么凑合用吧。
after-make-frame-functions 我加了好多东西,包括 键位映射
, 设置字体
, 启动窗口最大化
等等。
初衷,其实仅仅是为了保证所有的快键在所有的 frame 下一致。(包括在多个不同的文本 Terminal 下)
就是一个键盘 map 的映射,例如:
(define-key key-translation-map [(meta o)] [(super o)])
所有针对 meta o 的 按键序列,都转移到 super o, 然后,在所有模式下,都可以保证按下 meta o, 是我所需的那个快捷键。
我早忘了为什么这样,但是一定是必须的。
可能是最初我用 Emacs, 实在文本 Terminal 下,就是 Ctrl-Alt-1, Ctrl-Alt-2 下面,不这样搞一下,切换到一个新的下面,又恢复成原样了。
你试试就知道了,更改快捷键,在 tty1 启动,然后,到 tty2, 新开一个 emacsclient, 看看原来的键位是不是仍旧有效?当时我试了半天这是唯一的解法。虽然现在已经不在 tty1 下面玩了,不过也懒得删除。几十个快捷键映射,也不会搞得太慢,可以接受呀。基本上秒开。
在文本 Terminal 下,参数不同,我用的 -nw.
-nw, -t, --tty Open a new Emacs frame on the current terminal
我刚刚试了下,取消了那个 hook, 快键映射照样能用,不过字体恢复成默认了。你使用 Emacs, 不需要在 hook 里面设定字体吗?
说实在的,过去好久了,我也不记得当时为什么这样。呵呵。
#45 楼 @zw963 当然要改字体了,不然中文显示一塌糊涂,字体是和 frame 相关的。 其实我现在都没找到自己心宜的字体,都多少有些问题。
你可以看看我的有关 frame 的配置文件。 https://github.com/ranmocy/emacs_config/blob/master/customizations/ui/set-x.el
我当时为了让 Emacs 随系统自启动,同时支持 Terminal 和 X 两种样式的一致,特意将 menu-bar-mode 等移到 hook 中去了,不然貌似 Terminal 下会报错。
我见你文件注释中有写 Inconsolata
, 你试过这个英文字体吗?很不错呀。
至于那个微米黑
, 我觉得差不多是最好看的中文字体了吧。我觉得至少比黑体看着舒服。你可以试试,不过我很奇怪你用 等宽中文字体
. 如果你用 org-mode, 经常用文本表格
(我记笔记大量使用), 你会发现,英文等宽字体 + 中文等宽字体
根本没办法对齐的。你有试过用 org-mode 画一个文本表格吗?
哦。原来如此,我还真没有试过调整不同的大小。
不过我用 15 号的英文 Inconsolata, 中文字体 (文泉驿微米黑) 就没有设定大小,用起来表格可以对齐,效果很好。
只要中文不是等宽字体就行。
这里有中英等宽的补丁,http://forum.ubuntu.org.cn/viewtopic.php?f=68&t=370220。我在 Emacs 24.1 上试过了,Org mode 表格对齐完全没问题。
我觉得完美的字体是这样的:
怎么对中文和英文分别设置字体?那些符号在编程和平时文本下表现其实也应该区分开来才是,不知道怎么设置?
要是一个字体的话,我用过一个网友自制的 YaheiMono 满足前两条,但是第三条不行。 org-mode 我就没强求完全对齐了,反正用的次数也不是很多。
我连 Text-mode 都设定快捷键,直接使用 orgtbl-mode 画表格。如果通过 C-c 命令无法自动对齐表格,对我来说是不可忍受的。
英文字体常规设法,中文字体,你可以参考这段代码,我放到一个函数里,可以在 frame hook 被调用。
(defun initialize-font (&optional frame)
(set-fontset-font "fontset-default" 'unicode'("WenQuanYi Micro Hei Light")) ;Linux下字体设置
(when (equal window-system 'w32)
(set-fontset-font "fontset-default" 'unicode'("文泉驿微米黑"))))
坑爹,一个中文,一个英文是必需的。因为 Linux 字体名称识别为英文,Windows 下识别为英文。
(set-frame-font "Mono:pixelsize=21")
(set-fontset-font "fontset-default" 'chinese-gbk "Mono:pixelsize=22")
自从使用了 Slackware 14 版本之后,Emacs 24.2 貌似很久不死机了。 可能是之前的 13.37 GTK 的图形库存在一些 Bug 吧。事实上不仅仅是 Emacs, 我在 Linux 下的另一个软件,beyond compare 3 原来也存在问题, 后来覆盖了几个新的 GTK 库文件,就好了。
貌似社区新来了位 Emacser, 多多讨论,多多分享,哈哈。