Posted on 30-12-2008
Filed Under (技术) by waterlin

虽然我用M-1,M-2这样的快捷键来选择窗口,但是这需要不时地看窗口下标的数字是多少,有的时候仍然显得不够快速。

其实,我们有着更巧妙的方法。只要我们把默认的windows move键设成Meta,即把下面的语句扔到.emacs里:

(windmove-default-keybindings ‘meta)

我们就可以用预设好的meta键与方向键组合,实现在打开的窗口中的跳转。M-upM-downM-left,和M-right就可以实现上下左右这样的窗口跳转了,十分方便。

不过有一点需要注意的是,因为org mode已经使用了M-up,M-down,M-left,以及M-right这样的键组合,所以,在org mode下,这个功能无效。

(0) Comments    Read More   
Posted on 29-12-2008
Filed Under (技术) by waterlin

在工作与学习中,经常碰到了要关掉 Emacs 的情况。但是,下次打开 Emacs 的时候,一般来说都是要继续上次的工作,比如说接着看未看完的 info、接着写代码等。

于是,再次打开上次的文件,找到相应的位置,再继续编辑。

这样实在是有点太麻烦了。比如说,你再用 M-x info 来打开教程,却不知道你上次看到哪里来了;用 w3m 来看网络小说,却不知道上次看到哪里了。每次都要添加到 bookmark 实在是有点麻烦!

只要在退出 Emacs 前使用命令 M-x desktop-save,就可以把你现在已打开的文档记录下来。下次你再打开 Emacs 的时候,会自动打开这些文档。

当然,如果你够懒的话,可以在 .emacs 里添加这么一句:

这样,你每次退出 Emacs 的时候,Emacs 就会自动帮你保存 Emacs 的状态,下次你再打开 Emacs 的时候,所以的一切,又都回来了。

(0) Comments    Read More   
Posted on 29-12-2008
Filed Under (软件) by waterlin

作为电脑一族,都有电脑依赖症了。上班干活离不开电脑,回家了,娱乐还是离不开电脑。上网、看电影、聊天、打游戏,哪个能离开电脑?

没有了电脑,我可怎么活哦?现在的情况是,可以没有报纸、没有书籍、没有干粮,一台能上网的电脑却是万万不能少的!

但是天天对着电脑,一旦干活到了劲头上,屁股都不会挪动一下。长时间这样,眼睛、脖子、肩膀、屁股都受不了,哈~~

其实大家都知道,对着电脑一段时间就需要休息一下;其实大家都知道,不光是对着电脑,干同一件事情太长时间,都应该休息一下。这就是为什么我们上课都是四十五分钟一节。可是,没有几个人有这样的觉悟与自制力让自己适时地离开电脑,哪怕是两分钟!

今天给电脑装上了EyeDefender,可以设定强制你离开电脑休息的时间,可以设置休息时间的长短。最重要的是,它会提醒你,是时候让你自己离开电脑休息一下了!

我觉得这样挺好的,有一个东西,整天在你耳边叫你要好好休息一下、保护身体之类的,好过相信我自己了!

EyeDefender为个人用户提供免费版本。

(1) Comment    Read More   
Posted on 29-12-2008
Filed Under (软件) by waterlin

有一些自己比较喜欢并且常用的网站,页面的色彩搭配并不是太好,对眼睛很不舒服。

比如说天天要用的Google Reader,界面虽然好看,但是白晃晃的对眼睛的刺激太大了。遗憾的是,Google Reader好像并没有提供用户自定义style的功能。

不过,没有关系,可以在Firefox里用Stylish这个插件来给每个页面设置不同的风格。

用这个插件有一个好处,就是你可以使用别人已经写好的style。只要点击菜单里的“Find Styles for this Page”,Firefox就会打开一个集中了许多常用网站风格的页面。选择你喜欢的风格,就可以直接让Firefox根据它来显示你常用的网站了!

我给我的Google Reader选择了google reader dark-blue-gray这个风格。深蓝色的底袝上稍微亮一点的字体,看起来不那么累了。

(0) Comments    Read More   
Posted on 26-12-2008
Filed Under (技术) by waterlin

估计大家都很喜欢其他编辑器里的导航条,通过这些导航条,你可以快速地在你已经打开的文件里切换。一个一个的 tab,的确是一个现代编辑器所不可或缺的。

在 Emacs 里,我们也可以用 tabbar mode 来实现这个功能,并且可定制的功能更强大。把 tabbar mode 的 el 包扔到你的 path 里,在 .emacs 里添加下面这一句就可以了:

如果你要设成随 Emacs 的启动而自动启动 tabbar mode,则需要在 .emacs 里添加这句:

当你要遍历这些 tab 时,有两个命令:

我们可以把它们绑定到 C-Tab 和 C-S-Tab 键上:

这样,我们就可以快速地在各个tab中切换了。

另外,命令 M-x tabbar-forward-groupM-x tabbar-backward-group 则在各个 tab 组成的 group 里跳转。

Tabbar mode 会自动帮你把 Emacs 里的文件分组。可是,默认的分组方法并不是每个人都喜欢,它会把后缀名相同的文件分为一组,比如说 Perl 脚本都扔在一个组里,Yaml 文件又扔在另一个组里。写代码的时候,在这两个组里切换实在是太麻烦了!我就喜欢把除了 Emacs Buffer 之外的文件都放成一组,即我自己打开的文件放成一组。于是,我用下面这段代码来实现自己的想法:

我把上面的这些代码全部扔到我的 .emacs 文件里,就定义了我自己的 tab 功能,十分方便。

可以在 Emacswiki上的TabBarMode 里找到更多的配置技巧。

(0) Comments    Read More   
Posted on 26-12-2008
Filed Under (技术) by waterlin

Emacs默认的字体太小、太粗糙,看起来很不舒服,不设置实在是对不起自己的眼睛。但是,在Emacs里挑选合适的字体是个比较麻烦的事情,让初学者望而却步。本文推荐大家用一种比较直观的办法来设置自己喜欢的字体。

首先,在Emacs中,通过菜单Options –> Set Default Font,设置好你喜欢的字体。

然后,把光标放到你所在的字体上,用命令M-x describe-font来查看你当前使用的字体名称、字号大小。

把其中的字体信息拷贝出来,写到.emacs文件里:

(set-default-font “-outline-Courier New-normal-italic-normal-mono-16-*-*-*-c-*-iso8859-1”)

注意,这里的字号16是Emacs自己的XLFD字号的大小值,跟你刚刚在对话框里设置的不一样。

这样,你下次打开Emacs的时候,就可以使用你当前设置好的字体了。

其实,在Emacs23里,因为采用了新的fontconfig字体描述格式,对这个语句的写法有着更加人性化的写法。可以直接把你对话框的内容按下面的形式写到.emacs里:

(set-default-font “Courier New-14”)

其中Courier New为字体,14为对话框里设置的字体大小。

当然,还有更灵活的查询功能。可以用下面这个语句来调出设置字体的对话框:

(w32-select-font nil t)

只要把它放到*scratch*里,然后在行末按C-j即可运行。

同样,如果你要查询Emacs里能使用的所有字体名称,可以用这个命令:

(insert (prin1-to-string (x-list-fonts “*”)))

在行末用C-x C-e来运行即可。

(2) Comments    Read More   

公司默认的文档插件是基于 Vim 的,天天要用 gvim 来写文档,如果不对 gvim 进行一些设定,实在是很不舒服。

1. 配色方案和字体设定

首先,gvim 无法自动保存当前的设置,比如字体、配色方案等等。所以我们要修改一下 gVim 的配置文件,使得每次都可以载入我们所希望的设置。

修改 vim 安装目录下的 _vimrc 文件,把配色方案设置成我喜欢的 koehler,设置字体大小为 14,这样看得不会太辛苦:

设置图形界面下的字体,你可以采用下面的方法来获得你喜欢的字体的名称与大小。你可以点“编辑”==>“选择字体”,然后在对话框中选出你喜欢的字体与字号,选择完毕后,先按几下 ESC 确认处在 Normal 模式下,然后输入这条命令:”:set guifont”。回车后 gvim 屏幕最下方会显示出你当前所用的字体的名称与大小。将获得的结果根据上面的语句写到配置文件里面就可以了。需要注意一点,如果字体名称里面含有空格的话,在抄的时候需要在所有空格前面加一个反斜杠 “\” 进行转义。

如果你用了自己的插件,比如我这里用了我们公司的插件,里面就有设置了字体的种类与大小,你则需要先在自己的插件里把这行给注释掉。

2. 文档的一行最好不要超过 80 个字符

文档的一行最好不要超过 80 个字符,这样方便在所有的阅读器里阅读。但是对于一些邮件或是引用的东西,这个规则就不用严格要求。于是我用下面这行把 80 个字符后的字都高亮显示出来:

这样,哪些行超过了 80 个字,一目了然。

3. 设置并开启拼写检查,设置语言为 en。

4. 多 tab 应用

vim 自从 7.0 开始,就支持 tab 应用了,有了 tab 之后,就可以省下开很多编辑视窗的烦恼。但是默认的 gvim 并不使用 tab 来打开文件。当然,你可以用 :tabnew filename 命令来打开,但是相信大家更喜欢用双击来打开。这个时候,可以用如下方法设置(摘自水木社区 vim 版):

而在 windows 下,DOS 下也可以象上面那样打开;而若是“双击”打开方式,则可以修改注册表

将其键值修改为:

而若是用鼠标右键中的“用 vim 编辑”,先删掉注册表中的

,然后手工添加鼠标右键菜单,两种方式:

a. 直接进入注册表,在

下添加项“用 vim 编辑”,再在项“用vim编辑”下添加子项“command”,在其右边窗口把其键值设定为

b. 把下面的内容保存为文件 gvim.reg,并将之导入注册表

另外,也可以添加到鼠标右键中的“发送到”,方法:

进入到目录

下,“鼠标右键”==>“新建”==>“快捷方式”,然后通过对话框的“浏览”找到 gvim 安转位置,这样就建立 gvim 的一个快捷方式,右键单击这个快捷文件-属性-快捷方式,在“目标(T)”的地址栏写入:

注意:上面都是默认安装 gvim 的地址,若不是默认地址,请自行修改。

5. Emacs 模式

本人比较喜欢用 Emacs 来写东西,但是没有时间把公司的 Vim 插件移植到 Emacs 里来,只好用 Vimacs 插件在 Vim 里模拟一个 Emacs 用着先了。

Vimacs 插件,只在 vim 的插入状态下有用。模拟的是基本的 Emacs 键绑定,例如 C-f,C-e 等。安装非常的简单,把 Vimacs 的包下下来,然后拷贝 .txt 到你的 Vim 文档目录,一般来讲是

,再把后缀为 .vim 的文件拷贝到 Vim 的插件目录,默认为

目录。

6. 其它

如果你在使用的时候,碰到有一些按键有错误提示,则需要检查一下你已有的 plugin 在 keymapping 上是否和这个 vimacs 有冲突。

(2) Comments    Read More   
Posted on 23-12-2008
Filed Under (技术) by waterlin

1) 如何在一个字符串中查找某个字符出现的次数?

原文出处:http://www.perl.com/doc/FAQs/FAQ/oldfaq-html/Q4.24.html

如果你想在一个字符串中查找字符(X)出现的次数,你可以用tr///这个函数、配合下面的方法来实现:

$string = “ThisXlineXhasXsomeXx’sXinXit”:
$count = ($string =~ tr/X//);
print “There are $count Xs in the string”;

2) 如何在一个字符串中查找某个子字符串出现的次数?

上面的代码对于你只查找单个字符来说,是非常有效的。然而,如果你试图计算多个字符组成的子字符串、在一个大字符串中出现的次数,函数tr///就不起作用了。这个时候,我们就需要加一个while循环了:

$string = “-9 55 48 -2 23 -76 4 14 -44”;
$count++ while $string =~ /-\d+/g;
print “There are $count negative numbers in the string”;

3)Perl里查询某一个文件里某一个字符串出现了多少行、以及包含该字符串的行的内容

原文出处:http://www.perlmonks.org/?node_id=650671

我们可以用如下代码实现,子过程retriver()进行读文件、查找等操作。

use strict;
use warnings;
sub retriver();
my @lines;
my $lines_ref;
my $count;
$lines_ref = &retriver();
@lines =@$lines_ref;
$count = @lines;
print “Count :$count\nLines\n”;
print join “\n”,@lines;
sub retriver()
{
    my $file = ‘source_data\data.txt’;
    open FILE, $file or die “FILE $file NOT FOUND – $!\n”;
    my @contents = <FILE>;
    my @filtered = grep(/abc:/,@contents);
    return \@filtered;
}

(0) Comments    Read More   
Posted on 23-12-2008
Filed Under (技术) by waterlin

我有一个叫a.pl的Perl脚本,里面有类似下面的读取命令行输入值的语句:

my $device_name = <STDIN>;

如果我在b.pl脚本里,用system或是readpipe命令来粘合脚本a.pl,当运行到上面这个语句的时候,命令行会提示输入一个值。

有的时候,比如说自动化脚本测试中,希望能让脚本b.pl自动输入这个值,或者说,自动在b.pl脚本里给a.pl脚本里的变量$device_name赋值。

这样,程序就可以不用人工干预,全部自动运行了。

可以在b.pl中,用类似这样的语句来实现这个功能:

system(“echo yes|perl a.pl”);

或是

my @dev_check_result = readpipe(“echo “.$dev_file.” | perl a.pl”);

这样,在调用a.pl时,在命令行提示说要输入一个值给变量$device_name的时候,就会自动把yes或是$dev_file这个值赋值给a.pl里的$device_name变量。

(0) Comments    Read More   
Posted on 18-12-2008
Filed Under (软件) by waterlin

最近在看历史书的时候,远古时代的很多字都不知道读音,至于里面的意义嘛,就更不知道了。

这年头了,不可能再翻满是灰尘的字典、词典了吧?

今天找了找,汉典网这个在线字典、词典不错,有需要的时候,还可以找找里面附录里的老黄历、节气等信息。不知道有没有类似这种信息比较全面的桌面软件?

(0) Comments    Read More