虽然我用M-1,M-2这样的快捷键来选择窗口,但是这需要不时地看窗口下标的数字是多少,有的时候仍然显得不够快速。
其实,我们有着更巧妙的方法。只要我们把默认的windows move键设成Meta,即把下面的语句扔到.emacs里:
(windmove-default-keybindings ‘meta)
我们就可以用预设好的meta键与方向键组合,实现在打开的窗口中的跳转。M-up,M-down,M-left,和M-right就可以实现上下左右这样的窗口跳转了,十分方便。
不过有一点需要注意的是,因为org mode已经使用了M-up,M-down,M-left,以及M-right这样的键组合,所以,在org mode下,这个功能无效。
在工作与学习中,经常碰到了要关掉Emacs的情况。但是,下次打开Emacs的时候,一般来说都是要继续上次的工作,比如说接着看未看完的info、接着写代码等。
于是,再次打开上次的文件,找到相应的位置,再继续编辑。
这样实在是有点太麻烦了。比如说,你再用M-x info来打开教程,却不知道你上次看到哪里来了;用w3m来看网络小说,却不知道上次看到哪里了。每次都要添加到bookmark实在是有点麻烦!
只要在退出Emacs前使用命令M-x desktop-save,就可以把你现在已打开的文档记录下来。下次你再打开Emacs的时候,会自动打开这些文档。
当然,如果你够懒的话,可以在.emacs里添加这么一句:
(desktop-save-mode 1)
这样,你每次退出Emacs的时候,Emacs就会自动帮你保存Emacs的状态,下次你再打开Emacs的时候,所以的一切,又都回来了。
作为电脑一族,都有电脑依赖症了。上班干活离不开电脑,回家了,娱乐还是离不开电脑。上网、看电影、聊天、打游戏,哪个能离开电脑?
没有了电脑,我可怎么活哦?现在的情况是,可以没有报纸、没有书籍、没有干粮,一台能上网的电脑却是万万不能少的!
但是天天对着电脑,一旦干活到了劲头上,屁股都不会挪动一下。长时间这样,眼睛、脖子、肩膀、屁股都受不了,哈~~
其实大家都知道,对着电脑一段时间就需要休息一下;其实大家都知道,不光是对着电脑,干同一件事情太长时间,都应该休息一下。这就是为什么我们上课都是四十五分钟一节。可是,没有几个人有这样的觉悟与自制力让自己适时地离开电脑,哪怕是两分钟!
今天给电脑装上了EyeDefender,可以设定强制你离开电脑休息的时间,可以设置休息时间的长短。最重要的是,它会提醒你,是时候让你自己离开电脑休息一下了!
我觉得这样挺好的,有一个东西,整天在你耳边叫你要好好休息一下、保护身体之类的,好过相信我自己了!
EyeDefender为个人用户提供免费版本。
有一些自己比较喜欢并且常用的网站,页面的色彩搭配并不是太好,对眼睛很不舒服。
比如说天天要用的Google Reader,界面虽然好看,但是白晃晃的对眼睛的刺激太大了。遗憾的是,Google Reader好像并没有提供用户自定义style的功能。
不过,没有关系,可以在Firefox里用Stylish这个插件来给每个页面设置不同的风格。
用这个插件有一个好处,就是你可以使用别人已经写好的style。只要点击菜单里的“Find Styles for this Page”,Firefox就会打开一个集中了许多常用网站风格的页面。选择你喜欢的风格,就可以直接让Firefox根据它来显示你常用的网站了!
我给我的Google Reader选择了google reader dark-blue-gray这个风格。深蓝色的底袝上稍微亮一点的字体,看起来不那么累了。
估计大家都很喜欢其他编辑器里的导航条,通过这些导航条,你可以快速地在你已经打开的文件里切换。一个一个的tab,的确是一个现代编辑器所不可或缺的。
在Emacs里,我们也可以用tabbar mode来实现这个功能,并且可定制的功能更强大。把tabbar mode的el包扔到你的path里,在.emacs里添加下面这一句就可以了:
(require ‘tabbar)
如果你要设成随emacs的启动而自动启动tabbar mode,则需要在.emacs里添加这句:
(tabbar-mode t)
当你要遍历这些tab时,有两个命令:
M-x tabbar-forward: 跳转到下一个可见的tab
M-x tabbar-backward: 跳转到前一个可见的tab
我们可以把它们绑定到C-Tab和C-S-Tab键上:
(global-set-key [(control shift tab)] ‘tabbar-backward)
(global-set-key [(control tab)] ‘tabbar-forward)
这样,我们就可以快速地在各个tab中切换了。
另外,命令M-x tabbar-forward-group和M-x tabbar-backward-group则在各个tab组成的group里跳转。
Tabbar mode会自动帮你把Emacs里的文件分组。可是,默认的分组方法并不是每个人都喜欢,它会把后缀名相同的文件分为一组,比如说perl脚本都扔在一个组里,yaml文件又扔在另一个组里。写代码的时候,在这两个组里切换实在是太麻烦了!我就喜欢把除了Emacs Buffer之外的文件都放成一组,即我自己打开的文件放成一组。于是,我用下面这段代码来实现自己的想法:
(setq tabbar-buffer-groups-function
(lambda (b) (list “All Buffers”)))
(setq tabbar-buffer-list-function
(lambda ()
(remove-if
(lambda(buffer)
(find (aref (buffer-name buffer) 0) ” *”))
(buffer-list))))
我把上面的这些代码全部扔到我的.emacs文件里,就定义了我自己的tab功能,十分方便。
可以在Emacswiki上的TabBarMode里找到更多的配置技巧。
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来运行即可。
公司默认的文档插件是基于Vim的,天天要用gvim来写文档,如果不对gvim进行一些设定,实在是很不舒服。
1) 配色方案和字体设定
首先,gvim无法自动保存当前的设置,比如字体、配色方案等等。所以我们要修改一下gVim的配置文件,使得每次都可以载入我们所希望的设置。
修改vim安装目录下的_vimrc文件,把配色方案设置成我喜欢的koehler,设置字体大小为14,这样看得不会太辛苦:
colo koehler
set guifont=Courier_New:h14:cANSI
设置图形界面下的字体,你可以采用下面的方法来获得你喜欢的字体的名称与大小。你可以点“编辑”–>“选择字体”,然后在对话框中选出你喜欢的字体与字号,选择完毕后,先按几下ESC确认处在Normal模式下,然后输入这条命令:“:set guifont?”。回车后gvim屏幕最下方会显示出你当前所用的字体的名称与大小。将获得的结果根据上面的语句写到配置文件里面就可以了。需要注意一点,如果字体名称里面含有空格的话,在抄的时候需要在所有空格前面加一个反斜杠“\”进行转义。
如果你用了自己的插件,比如我这里用了我们公司的插件,里面就有设置了字体的种类与大小,你则需要先在自己的插件里把这行给注释掉。
2) 文档的一行最好不要超过80个字符,这样方便在所有的阅读器里阅读。但是对于一些邮件或是引用的东西,这个规则就不用严格要求。于是我用下面这行把80个字符后的字都高亮显示出来:
:match DiffAdd ‘\%>80v.*’
这样,哪些行超过了80个字,一目了然。
3) 设置并开启拼写检查,设置语言为en。
setlocal spell spelllang=en
4) 多tab应用
vim自从7.0开始,就支持tab应用了,有了tab之后,就可以省下开很多编辑视窗的烦恼。但是默认的gvim并不使用tab来打开文件。当然,你可以用:tabnew filename命令来打开,但是相信大家更喜欢用双击来打开。这个时候,可以用如下方法设置(摘自水木社区vim版):
在linux下可以这样打开
$gvim –remote-tab-silent filename而在windows下,DOS下也可以象上面那样打开;而若是“双击”打开方式,则可以修改注册表
HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command将其键值修改为:“C:\Program Files\Vim\vim70\gvim.exe” -p –remote-tab-silent “%1″
而若是用鼠标右键中的“用vim编辑”,先删掉注册表中的
HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\gvim,然后手工添加鼠标右键菜单,两种方式:
a. 直接进入注册表,在HKEY_CLASSES_ROOT\*\shell下添加项“用 vim 编辑”,
再在项“用vim编辑”下添加子项“command”,在其右边窗口把其键值设定为
“c:\Program Files\Vim\vim70\gvim.exe” -p –remote-tab-silent “%1″b. 把下面的内容保存为文件gvim.reg,并将之导入注册表
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Edit with &Vim]
[HKEY_CLASSES_ROOT\*\shell\Edit with &Vim\command]
@=”\”c:\\Program Files\\Vim\\vim70\\gvim.exe\” -p –remote-tab-silent \”%1\”"另外,也可以添加到鼠标右键中的“发送到”,方法:
进入到目录c:\Documents and Settings\用户名\SendTo下,“鼠标右键”-“新建”-“快捷方式”,然后通过对话框的“浏览”找到gvim安转位置,这样就建立gvim的一个快捷方式,右键单击这个快捷文件-属性-快捷方式,在“目标(T)”的地址栏写入:
“C:\Program Files\Vim\vim70\gvim.exe” -p –remote-tab-silent “%*”注意:上面都是默认安装gvim的地址,若不是默认地址,请自行修改。
5) Emacs模式
本人比较喜欢用Emacs来写东西,但是没有时间把公司的Vim插件移植到Emacs里来,只好用Vimacs插件在Vim里模拟一个Emacs用着先了。
Vimacs插件,只在vim的插入状态下有用。模拟的是基本的Emacs键绑定,例如C-f,C-e等。安装非常的简单,把Vimacs的包下下来,然后拷贝.txt到你的Vim文档目录,一般来讲是”C:\Program Files\vim\vimfiles\doc”,再把后缀为.vim的文件拷贝到Vim的插件目录(默认为”C:\Program Files\vim\vimfiles\plugin”)。
如果你在使用的时候,碰到有一些按键有错误提示,则需要检查一下你已有的plugin在keymapping上是否和这个vimacs有冲突。
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;
}
我有一个叫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变量。
最近在看历史书的时候,远古时代的很多字都不知道读音,至于里面的意义嘛,就更不知道了。
这年头了,不可能再翻满是灰尘的字典、词典了吧?
今天找了找,汉典网这个在线字典、词典不错,有需要的时候,还可以找找里面附录里的老黄历、节气等信息。不知道有没有类似这种信息比较全面的桌面软件?