分类目录归档:开发工具

SublimeText配置

在我的一台开发机上在ubuntu系统下使用eclipse,经常会出现死机,不得不寻求其它的代码编辑器。windows下大名鼎鼎的source insight放到linux下就状况不断。后看到chromium项目推荐了sublime text这款编辑器,用起来感觉还不错。下面记录一下使用过程中的一些设置,网上各种资料比较凌乱,所以就稍微整理一下,供自己今后翻阅。

1. 过滤不相关的文件

可以针对某个特定的工程,进入菜单project | Edit Project,编辑当前工程的sublime-project文件,加入两个过滤器,folder_exclude_patternsfile_exclude_patterns,如下所示:

"folders":
[
    {
        "path":"/home/alex/android/source/android4.2",
        "file_exclude_patterns":
        [
            "*.o"
        ],
        "folder_exclude_patterns":
        [
            ".repo"
        ]
    }
]

2. 模拟eclipse的快捷键

在eclipse中,有几个快捷键用的非常多,分别为:

CTRL+TAB 头文件和c/c++文件之间切换
CTRL+SHIFT+R 对话框中输入文件名(有联想功能),快速打开文件
CTRL+o 输入方法(函数)名,可快速定位到方法(函数)
CTRL+l 输入行号,快速定位到指定行
CTRL+h 打开文件搜索对话框


可以修改sublime text的Key Bindings达到模拟eclipse快捷键的效果,有两个配置项可以修改,一个是Key Bindings-Default,一个是Key Bindings-User,最好修改后一个配置文件。进入菜单Preferences | Key Bindings - User,加入如下行:

[
{ "keys": ["ctrl+shift+r"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} },
{ "keys": ["ctrl+o"], "command": "show_overlay", "args": {"overlay": "goto", "text": "@"} },
{ "keys": ["ctrl+l"], "command": "show_overlay", "args": {"overlay": "goto", "text": ":"} },
{ "keys": ["ctrl+t"], "command": "show_overlay", "args": {"overlay": "goto", "text": "#"} },
{ "keys": ["ctrl+tab"], "command": "switch_file", "args": {"extensions": ["cpp", "cxx", "cc", "c", "hpp", "hxx", "h", "ipp", "inl", "m", "mm"]} }
]

3. 针对项目的代码风格设置

chromium的项目的代码缩进为两个空格,而其它项目的代码缩进一般为4个空格,所以我就希望针对特定的项目进行代码风格设置,方法是编辑当前工程的sublime-project文件,加入如下行(和folders项平级):

"settings":
{
"tab_size": 2,
"translate_tabs_to_spaces": true,
"trim_trailing_white_space_on_save": true,
"draw_white_space": "all"
}

4. 插件集合

sublime_text的插件扩展机制非常强大,已经有很多人出于不同的需求,开发出各种插件。首先说一下插件的安装。

按ctrl+shit+p显示命令列表,在其中输入install,选择Package Control: Install package,接着就会出现插件列表,选择你所需要的插件即可。

打造称手的开发工具-Eclipse篇

古人云,工欲善其事,必先利其器,孙悟空为了找到称手的兵器,苦苦寻觅,终于寻得定海神针一枚,打造出如意金箍棒,但有多少程序员能够静心专研手头的工具呢?从事软件开发多年,接触了各种各样的软件开发工具,远的不说,代码编辑工具就接触过不少,Turbo C/Visual Studio/C++ Builder/Source Insight/UltraEdit/Vim等,但都没有精通,更别说按照自己的喜好增加一些脚本/插件。转入Android开发后,又开始接触Eclipse,发现Eclipse真是个好东西。但要让自己运用的得心应手,还需要专研一些设置。本文就是记录一下我在开发过程中的一些Eclipse设置。

1. 过滤某些文件/文件夹

阅读android源码(C++)及chromium源码时,选择新建工程的选项: Makefile Project with Existing Code。众所周知,android和chromium的源码超级大,Eclipse打开这些大工程,在Refresh Workspace和Indexer时非常慢,而且极占CPU。通常情况下,我们可能只对其中的部分文件感兴趣,有必要进行一下过滤。Eclipse提供了Include Filter和Exclude Filter,顾名思义,Include Filter就是只包含满足条件的文件/文件夹,Exclude Filter则是排除满足条件的文件/文件夹。可以定义多个Filter。方法如下:

Project Explorer中,选定某个目录,点击右键,选择Properties,找到Resource Filters,点击Add…:

Eclipse_Filter

可以选择按Name/Project Relative Path/Location/Last Modified/File Length等等进行匹配,我一般使用Project Relative Path进行匹配,也可以使用*.svn这样的通配符过滤掉svn目录。


2. 导入google c++编程风格

chromium C++代码采用的是google c++ code style。google c++编码规范被李开复称为最好的C++编程规范,有趣的可以到这里看看,条目非常多。

Eclipse也非常强大,可以支持不同的code style,而且这些style可以自定义,还可以导入/导出(需要注意的是,Eclipse的code style主要针对代码缩进/空格/括号位置,并不涉及变量命名等等)。google也提供了针对Eclipse的xml配置文件,我们只需导入到Eclipse即可,省去繁琐的配置。下面就说说导入方法。

  • 从https://google-styleguide.googlecode.com/svn/trunk/下载eclipse-cpp-google-style.xml
  • 打开Eclipse,选择Window | Preferences 菜单。
  • 在弹出对话框左边中选择C/C++ | Code Style。然后点击后侧的Import…按钮
  • 选择所下载的eclipse-cpp-google-style.xml文件,可以看到Select a profile下面的下拉框中多了Google C++选项。
  • 点击Apply按钮

3. 常用快捷键

CTRL+TAB头文件和c/c++文件之间切换
CTRL+SHIFT+R对话框中输入文件名(有联想功能),快速打开文件
CTRL+SHIFT+R对话框中输入文件名(有联想功能),快速打开文件
CTRL+o输入方法(函数)名,可快速定位到方法(函数)
CTRL+l输入行号,快速定位到指定行
CTRL+h打开文件搜索对话框

4. 保存文件时去掉行尾的空格

在gerrit中review代码时,如果行尾包含空格,就会显示出刺眼的红色。同样,使用git diff命令查看对文件的修改,如果行尾包含空格,也会显示刺眼的红色。在Eclipse中可以通过如下设置,自动去掉行尾的空格:

点击菜单Window -> Preferences -> C/C++ -> Editor -> Save Actions

然后勾选 Remove trailing whitespace

悲剧,为什么代码高亮总是不成功

在网上找了n多资料,试用了n种插件,但是使用LiveWriter插入代码,发布到博客网站后,代码高亮的信息就会丢失,具体表现在pre的属性被过滤了。比如:

<pre class="brush: cpp; gutter: false; toolbar: false; auto-links: false;">class A
{
public:
    A();
};
</pre>

发布到blog后就变成了:

<pre>class A
{
public:
A();
};
</pre>

自然就达不到代码高亮的效果。看别人的指南,好像也没有什么特别需要注意的地方,怎么到了我这里就这样呢?本希望把博客弄得漂亮些,让人看起来赏心悦目,但是碰到这个拦路虎,却怎么也跨不过去。

ununtu下的博客客户端也试过,比如blogilo,问题更大,本来代码是多行的,发布上去后,全到一行了。

下面就是悲剧的效果:

class A{
public:
    A();
};