我的Emacs折腾经验谈(三) speedbar , tabbar 还有linum-mode

离上一篇博客已经很遥远了,最近总是各种逛,但没有心思静下来写点东西,这回写一下我之前用的一些东西.

Speedbar

首先是speedbar,这个东西是emacs自带的,效果立竿见影,请输入M-x speedbar就可以看到,就是一个简单的文件树,对于sublime text熟悉的同学这玩意应该已经一目了然了,但是这个东西经过一段时间的使用可能会存在一些问题,我现在感觉speedbar离sublime text的左栏还是有一点距离的.不过当然也有一些弥补的办法.

首先,这个speedbar是单独一个窗口的,这对于窗口分配来说有一点不爽了,因为几乎所有的ide和编辑器都是在一起的,但是没有问题,请M-x list-package找sr-speedbar,然后配置你的文件,加入如下代码就可以了

(require 'sr-speedbar);;这句话是必须的
(add-hook 'after-init-hook '(lambda () (sr-speedbar-toggle)));;开启程序即启用

解释一下,第一行是必须的,但是第二行是如果你想开启emacs的时候这个东西就在的话可以加入这句话.另外在customize(输入M-x customize)里面可以有很多调节speedbar的地方,首先我们需要speedbar出现在左边,这里就要把Sr Speedbar Right Side:设为off.然后如果要在speedbar里面看所有文件的话(默认只显示emacs认识的文件)需要把Speedbar Show Unknown Files设置为on.或者说可以把常见到的需要加入speedbar中的文件的后缀名加入.这样设置基本上够用了.

前面说了我怎么配置speedbar的,接下来吐槽一些还需要改进的地方,也许是我没有钻研透的因素,我认为目前有一些不足:

  1. 有点慢,这里说的是光标跟踪的有点慢,事实上用鼠标点击没有高亮的地方是可以的,不需要等高亮移动过来,但是作为早就接受了光标和高亮同步的人来说,心中总会莫名地觉得好慢
  2. 刷新手动,就是说文件改动后在文件管理栏其实是没有反应的,必须手动刷新才行,不知道为什么这样设计
  3. 没有文件管理功能,就是不能新建文件夹和新建文件.但是话说回来其实没有必要做这个功能,至少大部分情况来说(C-x C-f比鼠标选取加邮件新增要快一些)

虽然有缺点,但是speedbar也有些有点不容忽视

  1. 作为一个文本编辑器可以显示文件的版本控制状态,我觉得这一点蛮重要的,在协同写代码的时候方便很多.
  2. 每一个文件可以函数级展开,就像IDE一样,这比绝大部分文本编辑器都强

今后我会再试试其他类型的文件管理侧栏,到时再为大家带来更详细的对比和配置.

Tabbar

在用惯了浏览器和标签式文本编辑器的我们可以说对于一个主力文本编辑器居然没有tab来切换buffer,而是用C-x b来切换buffer有些不能忍,于是理所应当的立即上tabbar,虽然StackOverFlow上有高手说tabbar不符合emacs熟练使用者的习惯,但是我作为初学者,应该先拿tabbar将就一下应该也未尝不可.

tabbar安装也是轻松又愉快地在list-package里面或者直接package-install安装,同speedbar一样我有些不满它的外观,所以安装了tabbar-ruler插件,这样会把tabbar整合到ruler栏里面,而且在打字的时候会出现ruler,移动鼠标又能变回tabbar,我觉得实在非常好用.

配置的话我就一条

(add-hook 'after-init-hook '(lambda () (tabbar-ruler-up)))

就是默认开了程序就启用tabbar,加上用customize启用了tabbar-ruler-global-ruler和tabbar-ruler-global-tabbar,这样tabbar就长存于窗口上了.

这里要解释下tabbar的逻辑和我们平常用的文本编辑器有些不一样(虽然可以调成一样的,但是我个人认为tabbar默认的更好),tabbar的显示并不是直接把所有的buffer都列出来直接显示在上面,这样的话谁看谁不爽,因为有太多例如*strach*这种关了又没准要用,不关又觉得碍眼的东西在.于是tabbar做出了创新:分组.

tabbar的buffer的分组是将两个用一样major mode的buffer分到一组,就是说,你自然可以看到你的python文件在一组,你的html又在一组,这样平均每组都有标签,找标签的时候也不用一个一个去找了,先通过模式找更好.左上角的上下箭头就是切换tabbar显示mode还是显示buffer名的.

Linum-mode

最后来介绍的最简单的,linum-mode,这东西就只有一个功能:显示行号,而且是emacs自带的,配置也很简单,(line-number-mode t)就可以了,这个可以在customize里面设置,唯一要注意的一点是它和speedbar有点冲突,所以我们需要在speedbar的window里面关闭它

(add-hook 'speedbar-mode-hook '(lambda () (linum-mode -1)))

这样就搞定了.

总的的来说emacs还是一个步步折腾的过程,但是我在其中感觉还是很好的,配置这些纠结的东西也是一个学习的过程,配出自己顺手的编辑器我个人觉得还是非常提升效率的,我已经把最常用的clojure开发基本上切换到了emacs上来.IntelliJ IDEA只是作为辅助.

 

speedbar , tabbar 还有linum-mode的更多相关文章

  1. 我的Emacs折腾经验谈(三) speedbar , tabbar 还有linum-mode

    离上一篇博客已经很遥远了,最近总是各种逛,但没有心思静下来写点东西,这回写一下我之前用的一些东西. Speedbar 首先是speedbar,这个东西是emacs自带的,效果立竿见影,请输入M-x s ...

  2. 为了树莓派IIraspberrypi安装emacs+ecb+cedet+session+color-theme+cscope+linum

    类似这篇文章写的不多,为了避免以后大家转来转去而忽略了写文章的时间,这些特别加上是2014年6月28日,省的对不上一些软件的版本号(下文中有些"最新"的说法就相应这个时间).假设转 ...

  3. 自定义tabBar

    ★★★★自定义tabBar★★★★★★★ Demo下载地址:https://github.com/marlonxlj/tabBarCustom.git 前言: 有的时候需求要对tabBar进行自定义的 ...

  4. react-native的tabbar和navigator混合使用

    前段时间搭建项目使用了navigator和react-native-tab-navigator,现在我教大家搭建一个通用的简单框架. 先把几张图贴在这里,这就是我们今天要搭建的东西,别看页面简单,但是 ...

  5. iOS 切换首页-更改tabbar的容器控制器

    最近想到的一个小需求: 首页切换:点击一个切换按钮,能实现首页的风格.排版等变换,原理是用一个新的VC替换掉. 效果如下:   ====>====> 实现方式很简单: 以我的Demo为例, ...

  6. weui tabbar 切换

    Html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <met ...

  7. 悬浮TabBar的实现--此段代码来自网络

    悬浮TabBar的实现 这个TabBar看着像是用自定义TabBar做的,但事实上它还是用的系统的TabBar,给系统的tabBar.backgroundImage设置一张设计好的背景图片. TabB ...

  8. 项目中 -- 设置tabBar样式 (旅游局)

    - (void)addChildViewController:(UIViewController *)ViewController image:(UIImage *)image selectImg:( ...

  9. iOS 有TabBar的VC界面push后隐藏TabBar的方法

    当一个UITabbarController管理多个UINavigationController的时候, 我们要从这每一个UINavigationController中push一个ViewControl ...

随机推荐

  1. android 数据共享

    android数据共享的各种部件中的应用是最重要的3途径: 第一.使用Application子类来实现数据共享. 例如,请看下面的例子: /**  * @author YangQuanqing 特征: ...

  2. CentOS修改用户密码方法

    CentOS修改用户密码方法 CentOS修改用户密码方法 1. 普通用户 a. 获取超级用户root权限 命令:su或者su -或者su - root b. passwd 用户名 2. 超级用户 a ...

  3. css3实现色子自动翻转效果

    原文:css3实现色子自动翻转效果 css3使我们能够跳出2d空间,实现3维空间的动画效果,这里给出一个自动翻转的3d色子动画效果制作过程. 第一步,首先进行HTML的布局,对于3D效果,布局有一定的 ...

  4. java设计模式之三单例模式(Singleton)

    单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比较频繁,对于一些大型的对象,这是一笔 ...

  5. 3. SQL Server数据库状态监控 - 可用空间

    原文:3. SQL Server数据库状态监控 - 可用空间 数据库用来存放数据,那么肯定需要存储空间,所以对磁盘空间的监视自然就很有必要了. 一. 磁盘可用空间 1. 操作系统命令或脚本.接口或工具 ...

  6. Apache无法启动解决 the requested operation has failed

    Apache不能启动解决办法 原因一:80端口占用例如IIS,另外就是迅雷. 原因二:软件冲突装了某些软件会使apache无法启动如Dr.com 你打开网络连接->TcpIp属性->高级- ...

  7. C#可扩展编程之MEF

    C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻 前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在 ...

  8. c#定义一个方法,根据存储过程名称和存储过程参数数组,执行对应的存储过程

    定义一个根据存储过程名称和存储过程参数数组,执行对应的存储过程的方法.用SqlParameter[]代替存储过程需要的参数.这样就不用为每一个存储过程写一个方法了 1.首先定义一个ExcuteProc ...

  9. 自己动手实现Expression翻译器 – Part Ⅲ

    上一节实现了对TableExpression的解析,通过反射创建实例以及构建该实例的成员访问表达式生成了一个TableExpression,并将其遍历格式化为”Select * From TableN ...

  10. JavaScript闭包小窥

    众所周知,JavaScript没有块级作用域,只有函数作用域.那就意味着定义在函数中的参数和变量在函数外部是不可见的,而在一个函数内部任何位置定义的变量,在该函数内部任何地方都可见.这带来的好处是内部 ...