Technology

Google服务里那些快捷键

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

首先祝各位网友圣诞节快乐! 什么? 你说今天是10月31日, Halloween? 嗯, 我也知道啊! 哦, 天哪, 我又把 Oct 31 和 Dec 25 弄混了.. 该死的8进制!

看看Friendfeed上, 有了披着床单的鬼和南瓜头, 连搜索框都有蜘蛛网了. 但Google上却还什么都没有, 是怎么回事?

在使用Emacs之后, 我越来越感受到在处理工作时, 键盘相对鼠标来说效率实在是太高了(这句话不适合美工人员和Windows用户). Emacs里高效的快捷键让我想起来也分享一下Google服务里的那些快捷键.

现在收集了有Gmail和Google Reader的快捷键, 来源是官方帮助.

Gmail 的快捷键 – via

要打开或关闭那些区分大小写的快捷键(Gmail里快捷键功能是默认关闭的),请点击设置,然后选取键盘快捷键旁边的选项。

快捷键 定义 操作
c 撰写 可让您撰写新邮件。 <Shift> + c 可让您在新窗口撰写邮件。
/ 搜索 将光标停留在搜索框。
k 转到后一个会话 打开或将您的光标移动到较新的会话。 您可以按 <Enter> 展开会话。
j 转到前一个会话 打开或将您的光标移动到下一个更早的会话。 您可以按 <Enter> 展开会话。
n 下一封邮件 将您的光标移动到下一封邮件。 您可以按 <Enter> 显示或隐藏邮件。 (仅适用于”会话视图”。)
p 上一封邮件 将您的光标移动到上一封邮件。 您可以按 <Enter> 显示或隐藏邮件。 (仅适用于”会话视图”。)
o <Enter> 打开 打开会话。 如果处于”会话视图”中,还会显示或隐藏邮件。
u 返回到会话列表 刷新页面,并返回收件箱或会话列表。
e 存档 从任意视图将会话存档。
m 忽略 除非您是收件人或邮件直接抄送给您,否则,此操作会将会话存档且以后所有的邮件均不会保存在收件箱中。 了解详情
x 选择会话 自动检查和选择会话,便于您存档、应用标签,或在下拉菜单中选择操作以应用于所选会话。
s 为邮件或会话加注星标 为邮件或会话加注或删除星标。 星标可以让您标示邮件或会话的特殊状态。
! 这是垃圾邮件 将邮件标记为垃圾邮件,并将其从会话列表中删除。
r 回复 回复发件人。 <Shift> + r 可在新窗口回复邮件。 (仅适用于”会话视图”。)
a 回复所有人 回复所有收件人。 <Shift> +a 可让您在新窗口中回复所有收件人。 (仅适用于”会话视图”。)
f 转发 转发邮件。 <Shift> + f 允许您在新窗口中转发邮件。 (仅适用于”会话视图”。)
<Esc> 从输入字段退出 将光标从当前输入字段中移出。
<Ctrl> + s 保存草稿 撰写邮件时,按住 <Ctrl> 键的同时按下 s ,可将当前文本保存为草稿。 在使用此快捷键时,确保您的光标位于某一文本字段中,如撰写窗格或任何收件人”:”、”抄送:”、”密送:或敁主题字段。”
# 删除 将会话移至已删除邮件。
<Shift> + i 标记为已读 将邮件标记为已读并跳到下一封邮件。
<Shift> + u 标记为未读 将邮件标记为未读,从而以后可以再回来阅读该邮件。
[ 存档并转到上一个 将您的会话存档,并转到上一个。
] 存档并转到下一个 将您的会话存档,并转到下一个。
z 撤消 如果需要,则撤消上一个操作(适用于具有撤消链接的操作)。
<Shift> + n 更新当前会话 在有新邮件时更新您的当前会话。
q 将光标移到聊天搜索 将您的光标直接移到聊天搜索框。
y 从当前视图中删除*
将邮件或会话从当前视图中自动删除。

  • 在”收件箱”中,”y”用于存档
  • 在”已加星标”下,”y”用于删除星标
  • 在”已删除邮件”中,”y”用于将邮件移至收件箱
  • 在任一标签下,”y”用于删除标签

* 在”垃圾邮件”、”已发邮件”或”所有邮件”中,”y”不起作用。

.. 显示其他操作 显示”其他操作”下拉菜单。
? 显示键盘快捷键帮助 在任一页面内显示键盘快捷键帮助菜单。

Gmail 的组合键

快捷键 定义 操作
<tab> 然后 <Enter> 发送邮件 撰写邮件后,使用该组合键自动发送邮件。 (在 Windows 的 Internet Explorer 和 Firefox 上支持)
y 然后 o 存档并转到下一个 将您的会话存档,并转到下一个。
g 然后 a 转到”所有邮件” 转到”所有邮件”,这是存放所有已发送或接收(并且未删除)的邮件的位置。
g 然后 s 转到”已加星标” 转到所有已加注星标的会话。
g 然后 c 转到”通讯录” 转到通讯录列表。
g 然后 d 转到”草稿” 转到您保存的所有草稿。
g 然后 i 转到”收件箱” 返回收件箱。
g 然后 t 转到”已发邮件” 转到已发送的所有邮件。
* 然后 a 全部选中 选择所有邮件。
* 然后 n 未选择任何邮件 取消选择所有邮件。
* 然后 r 选择已读邮件 选择已读的所有邮件。
* 然后 u 选择未读邮件 选择所有未读邮件。
* 然后 s 选择已加星标的邮件 选择已加星标的所有邮件。
* 然后 t 选择未加注星标的邮件 选择未加注星标的所有邮件

Google Reader 的快捷键 – via

快捷键 定义 操作
j/k 向下/向上浏览项目 在列表中选择下一个/上一个项目
<Space>/<Shift>+<Space> 向下/向上翻页 向下/向上翻页
n/p 向下/向上扫描 在列表视图中,无需打开就可选择下一个项目
o 打开/关闭项目 在列表视图中,展开或折叠所选项目
<Enter> 打开/关闭项目 在列表视图中,展开或折叠所选项目
s 切换星标 为所选项目加注星标
<Shift>+s 切换共享 共享所选项目
m 标记为已读/未读 在所选项目的已读/未读状态间切换
t 标记项目 打开所选项目的标记字段
v 查看原始内容 在新窗口中打开该文章的原始来源
<Shift>+a 全部标记为已读 将当前视图中的所有项目标记为已读
1 展开视图 将订阅展示为扩展项目
2 列表视图 将订阅展示为标题列表
r 刷新 在导航中刷新未读文章数
<Shift>+n/p 导航向下/向上 在导航中选择下一个/上一个订阅或文件夹
<Shift>+x 导航展开/折叠 在导航中展开或折叠所选文件夹
<Shift>+o 导航打开订阅 在导航中打开当前所选项目
g 然后 h 转到主页 转到 Google 阅读器主页
g 然后 a 转到所有项目 转到”所有项目”视图
g 然后 s 转到加星标项目 转到”加星标项目”视图
g 然后 t 转到标记 允许通过输入标记名称转到该标记
g 然后 u 转到订阅 允许通过输入订阅名称转到该订阅
u 切换全屏模式 隐藏或展示订阅列表
? 键盘快捷键帮助 展示有关 Google 阅读器快捷键的快捷指南

Google Calendar 的快捷键 – via

快捷键 定义 操作
c 创建活动 可让您创建新活动。
/ 搜索 将光标置入搜索框
p 或 j 上一日期范围 将日历视图移动到上一日期范围
n 或 k 下一日期范围 将日历视图移动到下一日期范围
t 跳转到”今天” 移动到当前日
d “天”视图 在”天”视图中显示日历
x 自定义视图 在自定义视图中显示日历
w “周”视图 在”周”视图中显示日历
m “月”视图 以”月”视图显示日历
a “日程”视图 以”日程”视图显示日历
q 快速添加 打开”快速添加”
S 设置 进入 Google 日历的”设置”页面
<Esc> 或 u 返回到日历 返回到默认的日历视图

WordPress插件 – mimeTeX

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

$$\TeX$$是Donald E. Knuth在1978年开始开发的一款用于排版他的著作《The Art of Computer Programming》的自由软件. Knuth为每一个发现Bug的用户提供奖励, 奖励金额从1美分开始, 并每年翻倍, 直到目前的327.68美元封顶. 但他却并未为此付出太多金钱, 因为$$\TeX$$中的漏洞实在很少. $$\TeX$$最初的版本号是3.0, 每次更新后在版本号小数点后添加一位, 使它愈趋近于$$\pi$$, 现在的版本号是3.1415926. $$\LaTeX$$是$$\TeX$$的一个宏包, 它使$$\TeX$$更方便易用. 由于LaTeX很方便排版, 尤其在处理复杂的表格和数学公式上极为突出, 它被广泛用于制作各种科技文献和出版物. 比如Knuth的《具体数学》(Concrete Mathematics)就是用TeX排版的, 许多大学也提供各自的毕业生论文LaTeX模板.

在GPL协议下发布的mimeTeX, 是一个用于轻松地在网页中嵌入$$\LaTeX$$数学表达式的软件. 由张志强开发的mimeTeX for WordPress是WordPress下调用mimeTeX的插入$$\LaTeX$$公式的插件. 如果有可能, 最好在自己的服务器上安装mimeTeX(只需要cgi支持, bluehost, dreamhost都支持), 但我的服务器不能自己安装, 所以只能使用第三方架设的mimeTeX服务.

插件的安装方法很简单

  1. 下载插件后上传到WordPress的插件目录.
  2. 到管理员后台激活插件.
  3. 在wp-content下新建cache文件夹, 并赋予777权限.

来看几个例子吧, 其实上面的$$\LaTeX$$就是调用mimeTeX显示的, 我输入的仅仅是$$\LaTeX!$$.

先来个简单的

$$\Large x^2+y^2=z^2$$

还有上次我提到的那个表示化圆为方的式子, 谁告诉我下它究竟讲的什么

$$\Large \exists f\in\mathbb{P}^{[\mathbb{R}]}_{\infty},f(\sqrt{\pi})=0$$

更复杂一些的

$$\Large e^x=\lim_{n\to\infty} \left(1+\frac~xn\right)^n$$

$$\Large A\ =\ \large\left( \begin{array}{c.cccc}&1&2&\cdots&n\\ \hdash1&a_{11}&a_{12}&\cdots&a_{1n}\\ 2&a_{21}&a_{22}&\cdots&a_{2n}\\ \vdots&\vdots&\vdots&\ddots&\vdots\\ n&a_{n1}&a_{n2}&\cdots&a_{nn}\end{array}\right)$$

$$\normalsize \left(\large\begin{array}{GC+23} \varepsilon_x\\\varepsilon_y\\\varepsilon_z\\\gamma_{xy}\\ \gamma_{xz}\\\gamma_{yz}\end{array}\right)\ {\Large=} \ \left[\begin{array}{CC} \begin{array}\frac1{E_{\fs{+1}x}} &-\frac{\nu_{xy}}{E_{\fs{+1}x}} &-\frac{\nu_{\fs{+1}xz}}{E_{\fs{+1}x}}\\ -\frac{\nu_{yx}}{E_y}&\frac1{E_{y}}&-\frac{\nu_{yz}}{E_y}\\ -\frac{\nu_{\fs{+1}zx}}{E_{\fs{+1}z}}& -\frac{\nu_{zy}}{E_{\fs{+1}z}} &\frac1{E_{\fs{+1}z}}\end{array} & {\LARGE 0} \\ {\LARGE 0} & \begin{array}\frac1{G_{xy}}&&\\ &\frac1{G_{\fs{+1}xz}}&\\&&\frac1{G_{yz}}\end{array} \end{array}\right] \ \left(\large\begin{array} \sigma_x\\\sigma_y\\\sigma_z\\\tau_{xy}\\\tau_{xz}\\\tau_{yz} \end{array}\right)$$

甚至可以画图

$$\Large\hspace{5}\unitlength{1} \picture(175,100){~(50,50){\circle(100)} (1,50){\overbrace{\line(46)}^{4$\;\;a}} (52,50){\line(125)}~(50,52;115;2){\mid}~(52,55){\longleftar[60]} (130,56){\longrightar[35]}~(116,58){r}~(c85,50;80;2){\bullet} (c85,36){3$-q}~(c165,36){3$q} (42,29){\underbrace{\line(32)}_{1$a^2/r\;\;\;}}~}$$

而且支持在评论时加入$$\LaTeX$$表达式, 试试吧!

记得要在$$\LaTeX$$表达式两端用两个$符号引起来!

用最简单的方法让TeX Live支持中文

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

让TeX支持中文不是一件容易的事, 但我终于找到了一个简单的办法(应该说是傻瓜办法).

安装TeX Live和CJK. 在源里选择texlive, latex-cjk-chinese(如果需要日文和韩文支持, 那么选择latex-cjk-all)安装.

然后下载”YueWang-zhfonts-final_1.01.tar.bz2″, 这是YueWang制作的TeX Live 2007使用的字体包, 有207M. 教育网里可以在这里下载, 教育网外可以在这里下载. 顺便分享一个很好用的FTP搜索引擎, http://run.hit.edu.cn/.

然后将解压后文件夹内的两个文件夹移动到你的Home目录里, 并在目录名前分别加 ‘.'(点号). 好了, 大功告成. 但根据安装说明 “如果不行, 请把~/.texlive2007/texmf-var/fonts/map/dvips中的所有map給enable了.”, 我不是很了解这些, 等我进一步了解后再作解释吧.

编译一个tex文件来试试效果吧, 下面是tex文件的样例.

\documentclass{article}
\usepackage{<cjkpackage>}
\begin{document}
\begin{CJK}{<encoding>}{<fontname>}
你好!
\end{CJK}
\end{document}

其中<cjkpackage>可以是CJKutf8(源文件用UTF8编码)也可以是CJK(源文件用GBK编码), <encoding>是GBK或UTF8, 和上面的<cjkpackage>是对应的, 也就是是CJK那么必须是GBK. 而如果是CJKutf8,则就是UTF8. <fontname>就好说了,就是song, hei, fs,kai等等.

Emacs快捷键列表

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

C = Control
M = Meta = Alt | Esc
Del = Backspace

基本快捷键(Basic)
C-x C-f “find”文件, 即在缓冲区打开/新建一个文件
C-x C-s 保存文件
C-x C-w 使用其他文件名另存为文件
C-x C-v 关闭当前缓冲区文件并打开新文件
C-x i 在当前光标处插入文件
C-x b 新建/切换缓冲区
C-x C-b 显示缓冲区列表
C-x k 关闭当前缓冲区
C-z 挂起emacs
C-x C-c 关闭emacs

光标移动基本快捷键(Basic Movement)
C-f 后一个字符
C-b 前一个字符
C-p 上一行
C-n 下一行
M-f 后一个单词
M-b 前一个单词
C-a 行首
C-e 行尾
C-v 向下翻一页
M-v 向上翻一页
M-< 到文件开头
M-> 到文件末尾

编辑(Editint)
M-n 重复执行后一个命令n次
C-u 重复执行后一个命令4次
C-u n 重复执行后一个命令n次
C-d 删除(delete)后一个字符
M-d 删除后一个单词
Del 删除前一个字符
M-Del 删除前一个单词
C-k 移除(kill)一行

C-Space 设置开始标记 (例如标记区域)
C-@ 功能同上, 用于C-Space被操作系统拦截的情况
C-w 移除(kill)标记区域的内容
M-w 复制标记区域的内容
C-y 召回(yank)复制/移除的区域/行
M-y 召回更早的内容 (在kill缓冲区内循环)
C-x C-x 交换光标和标记

C-t 交换两个字符的位置
M-t 交换两个单词的位置
C-x C-t 交换两行的位置
M-u 使从光标位置到单词结尾处的字母变成大写
M-l 与M-u相反
M-c 使从光标位置开始的单词的首字母变为大写

重要快捷键(Important)
C-g 停止当前运行/输入的命令
C-x u 撤销前一个命令
M-x revert-buffer RETURN (照着这个输入)撤销上次存盘后所有改动
M-x recover-file RETURN 从自动存盘文件恢复
M-x recover-session RETURN 如果你编辑了几个文件, 用这个恢复

在线帮助(Online-Help)
C-h c 显示快捷键绑定的命令
C-h k 显示快捷键绑定的命令和它的作用
C-h l 显示最后100个键入的内容
C-h w 显示命令被绑定到哪些快捷键上
C-h f 显示函数的功能
C-h v 显示变量的含义和值
C-h b 显示当前缓冲区所有可用的快捷键
C-h t 打开emacs教程
C-h i 打开info阅读器
C-h C-f 显示emacs FAQ
C-h p 显示本机Elisp包的信息

搜索/替换(Seach/Replace)
C-s 向后搜索
C-r 向前搜索
C-g 回到搜索开始前的位置(如果你仍然在搜索模式中)
M-% 询问并替换(query replace)

Space或y 替换当前匹配
Del或n 不要替换当前匹配
. 仅仅替换当前匹配并退出(替换)
, 替换并暂停(按Space或y继续)
! 替换以下所有匹配
^ 回到上一个匹配位置
RETURN或q 退出替换

使用正则表达式(Regular expression)搜索/替换
可在正则表达式中使用的符号:
^ 行首
$ 行尾
. 单个字符
.* 任意多个(包括没有)字符
\< 单词开头
\> 单词结尾
[] 括号中的任意一个字符(例如[a-z]表示所有的小写字母)

M C-s RETURN 使用正则表达式向后搜索
M C-r RETURN 使用正则表达式向前搜索
C-s 增量搜索
C-s 重复增量搜索
C-r 向前增量搜索
C-r 重复向前增量搜索
M-x query-replace-regexp 使用正则表达式搜索并替换

窗口命令(Window Commands)
C-x 2 水平分割窗格
C-x 3 垂直分割窗格
C-x o 切换至其他窗格
C-x 0 关闭窗格
C-x 1 关闭除了光标所在窗格外所有窗格
C-x ^ 扩大窗格
M-x shrink-window 缩小窗格
M C-v 滚动其他窗格内容
C-x 4 f 在其他窗格中打开文件
C-x 4 0 关闭当前缓冲区和窗格
C-x 5 2 新建窗口(frame)
C-x 5 f 在新窗口中打开文件
C-x 5 o 切换至其他窗口
C-x 5 0 关闭当前窗口

书签命令(Bookmark commands)
C-x r m 在光标当前位置创建书签
C-x r b 转到书签
M-x bookmark-rename 重命名书签
M-x bookmark-delete 删除书签
M-x bookmark-save 保存书签
C-x r l 列出书签清单

d 标记等待删除
Del 取消删除标记
x 删除被标记的书签
r 重命名
s 保存列表内所有书签
f 转到当前书签指向的位置
m 标记在多窗口中打开
v 显示被标记的书签(或者光标当前位置的书签)
t 切换是否显示路径列表
w 显示当前文件路径
q 退出书签列表

M-x bookmark-write 将所有书签导出至指定文件
M-x bookmark-load 从指定文件导入书签

Shell
M-x shell 打开shell模式
C-c C-c 类似unix里的C-c(停止正在运行的程序)
C-d 删除光标后一个字符
C-c C-d 发送EOF
C-c C-z 挂起程序(unix下的C-z)
M-p 显示前一条命令
M-n 显示后一条命令

DIRectory EDitor (dired)
C-x d 打开dired
C(大写C) 复制
d 标记等待删除
D 立即删除
e或f 打开文件或目录
g 刷新当前目录
G 改变文件所属组(chgrp)
k 从屏幕上的列表里删除一行(不是真的删除)
m 用*标记
n 光标移动到下一行
o 在另一个窗格打开文件并移动光标
C-o 在另一个窗格打开文件但不移动光标
P 打印文件
q 退出dired
Q 在标记的文件中替换
R 重命名文件
u 移除标记
v 显示文件内容
x 删除有D标记的文件
Z 压缩/解压缩文件
M-Del 移除标记(默认为所有类型的标记)
~ 标记备份文件(文件名有~的文件)等待删除
# 标记自动保存文件(文件名形如#name#)等待删除
*/ 用*标记所有文件夹(用C-u */n移除标记)
= 将当前文件和标记文件(使用C-@标记而不是dired的m标记)比较
M-= 将当前文件和它的备份比较
! 对当前文件应用shell命令
M-} 移动光标至下一个用*或D标记的文件
M-{ 移动光标至上一个用*或D标记的文件
% d 使用正则表达式标记文件等待删除
% m 使用正则表达式标记文件为*
+ 新建文件夹
> 移动光标至后一个文件夹
< 移动光标至前一个文件夹
s 切换排序模式(按文件名/日期)

或许把这个命令归入这一类也很合适:
M-x speedbar 打开一个独立的目录显示窗口

Telnet
M-x telnet 打开telnet模式
C-d 删除后一个字符或发送EOF
C-c C-c 停止正在运行的程序(和unix下的C-c类似)
C-c C-d 发送EOF
C-c C-o 清除最后一个命令的输出
C-c C-z 挂起正在运行的命令
C-c C-u 移除前一行
M-p 显示前一条命令

Text
只能在text模式里使用
M-s 使当前行居中
M-S 使当前段落居中
M-x center-region 使被选中的区域居中

宏命令(Macro-commands)
C-x ( 开始定义宏
C-x ) 结束定义宏
C-x e 运行最近定义的宏
M-n C-x e 运行最近定义的宏n次
M-x name-last-kbd-macro 给最近定义的宏命名(用来保存)
M-x insert-kbd-macro 将已命名的宏保存到文件
M-x load-file 载入宏

编程(Programming)
M C-\ 自动缩进光标和标记间的区域
M-m 移动光标到行首第一个(非空格)字符
M-^ 将当前行接到上一行末尾处
M-; 添加缩进并格式化的注释
C, C++和Java模式
M-a 移动光标到声明的开始处
M-e 移动光标到声明的结尾处
M C-a 移动光标到函数的开始处
M C-e 移动光标到函数的结尾处
C-c RETURN 将光标移动到函数的开始处并标记到结尾处
C-c C-q 根据缩进风格缩进整个函数
C-c C-a 切换自动换行功能
C-c C-d 一次性删除光标后的一串空格(greedy delete)

为了实现下面的一些技术, 你需要在保存源代码的目录里运行”etags
*.c *.h *.cpp”(或者源代码的其他的扩展名)
M-.(点) 搜索标签
M-x tags-search ENTER 在所有标签里搜索(使用正则表达式)
M-,(逗号) 在tags-search里跳至下一个匹配处
M-x tags-query-replace 在设置过标签的所有文件里替换文本

GDB(调试器)
M-x gdb 在另一个的窗格中打开gdb

版本控制(Version Control)
C-x v d 显示当前目录下所有注册过的文件(show all registered files in this dir)
C-x v = 比较不同版本间的差异(show diff between versions)
C-x v u 移除上次提交之后的更改(remove all changes since last checkin)
C-x v ~ 在不同窗格中显示某个版本(show certain version in different window)
C-x v l 打印日志(print log)
C-x v i 标记文件等待添加版本控制(mark file for version control add)
C-x v h 给文件添加版本控制文件头(insert version control header into file)
C-x v r 获取命名过的快照(check out named snapshot)
C-x v s 创建命名的快照(create named snapshot)
C-x v a 创建gnu风格的更改日志(create changelog file in gnu-style)

这份列表根据http://lpn.rnbhq.org/tools/xemacs/emacs_ref.html和我的使用经验翻译整理而来. 部分内容我不是很熟悉(比如Version Control), 在给出翻译的同时附上了英文, 这部分如果有错误, 请给我指出, 谢谢. 原列表中的部分命令/快捷键已经失效, 我在整理中发现的已修正, 但仍可能存在错误, 希望您发现后能指出来, 谢谢. 我使用的Emacs的版本是GNU Emacs 23.0.60.1 of 2008-03-20, 而因各人使用的Emacs版本不同, 命令/快捷键可能存在差异, 所以希望您在指出问题时能同时附上您的Emacs版本号.

我的Linux日记[五]: bash的小技巧

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

  1. 我的Linux日记[一]: 让Ubuntu完全支持中文
  2. 我的Linux日记[二]: 重启后设备无法正常工作
  3. 我的Linux日记[三]: 系统为何无法启动
  4. 我的Linux日记[四]: 在Linux下播放多媒体文件
  5. 我的Linux日记[五]: bash的小技巧

bash是Ubuntu的默认终端, 也是大部分Linux发行版和Mac OS X的默认终端. 这篇日志记录了我在网上找到的和自己在使用中发现的一些使用技巧.

首先是一些快捷键
up & down 依次翻阅曾输入过的命令
ctrl + r 搜索曾输入过的命令, 但我不常用这个, 因为我有更方便的命令
ctrl + a 光标移动到行首
ctrl + e 光标移动到行尾, 这两个快捷键是Emacs风格的
ctrl + u 剪切光标之前的内容
ctrl + k 与上一个相反, 剪切光标之后的内容
ctrl + y 粘贴以上用以上两个快捷键剪切的内容
ctrl + w 删除光标左边的内容
ctrl + l 清屏, 和clear命令效果一样

我再来说说上面提到的更方便的搜索曾输入过的命令的方法. 在bash中输入过的命令都会保存在~/.bash_history里, 搜索这个文件就能搜索输入过的命令了. 在这里我们使用egrep这个支持正则表达式匹配的程序搜索.

cat ~/.bash_history | egrep REGEXP

这个命令可以显示匹配”REGEXP”的, 曾输入过的命令. 而如果使用ctrl + r搜索, 可能要按很多次ctrl + r才能找到需要的命令.

这个命令里包含了一个”|”符号, 这是在使用bash支持的”管道”功能. 管道, 就像是将程序输出的数据流装进了管子, 让它流向我们指定的地方(下一个程序). 比如这里, 我先将~/.bash_history的内容读取出来, 将它导入egrep, 让egrep用我输入的REGEXP来匹配这些数据. 再看一个用到管道功能的命令:

ls -l | more

“ls -l” 显示当前目录的文件和子文件夹的详细信息, “more” 可以让它分页显示. 是不是很方便?

bash里还有一个很有用的功能是”重定向”, 它可以重定向程序的标准输入输出和标准错误输出.

例如:

ls -l > ls.txt

和上一个命令差不多, 不过这次是把 “ls -l” 显示出的内容写入了 “ls.txt” 这个文件里. 如果把上面的 “>” 换成 “>>” , 就变成了把那些显示的内容添加到 “ls.txt” 的末尾, 而不是覆盖这个文件.

好了, 回到刚才说的那个搜索输入过的命令的命令(绕口令..). 我仍然嫌每次写这么长的命令太麻烦, 于是我编辑了一下”~/.bashrc”这个文件. 在它里面添加了

alias shis='cat ~/.bash_history | egrep'

这样一行. 之后我想使用上面的命令就只需要用”shis”这个命令加上我要搜索的正则表达式就好了.

上面提到的”~/.bashrc”文件帮了我很大的忙, 因为它是你打开bash时会被调用的一个文件. 在里面写上一些常用命令的缩写, 在调用的时候就方便很多. 我的”.bashrc”里有这些缩写, 一部分是系统自带了的, 一部分是我在网上看到的.

Bash语言: My .bashrc
# enable color support of ls and also add handy aliases
# 启用ls和grep等命令的自动高亮功能
if [ “$TERM” != “dumb” ] &amp;&amp; [ -x /usr/bin/dircolors ]; then
eval “` dircolors -b`”
  alias ls=‘ ls –color=auto’
  alias dir=‘ ls –color=auto –format=vertical’
  alias vdir=‘ ls –color=auto –format=long’

  alias grep=‘ grep –color=auto’
  alias fgrep=‘ fgrep –color=auto’
  alias egrep=‘ egrep –color=auto’
fi

# some more ls aliases
# 很方便的, 而且很容易理解吧
alias ll=‘ls -l’
alias la=‘ls -A’
alias l=‘ls -CF’

# my aliases
alias rm=‘rm -i’ # 删除前需要确认, 防止误删
alias ..=‘cd ..’
alias server_name=‘ssh -v -l username server’ # 对常用ssh的人很有用, username和server请自己替换
alias shis=‘cat ~/.bash_history | egrep’ # 刚刚说过的

这里的代码高亮用到了代码发芽网的功能, 比WP的<code>强大, 但代码长度也要长些.

好了, 再额外提一个我知道的命令.

find . -perm /u+x -type f -exec rm {} \;

删除当前目录里所有的可执行文件. 在我清理存放我做题的文件夹时很有用, 因为我会编译一堆没有扩展名的可执行文件, 但删除时却也可以用一条命令全删除, 很好吧?

屏蔽 WordPress 2.6 的日志修订功能

本文在CC版权协议下发布, 转载请注明出自aifreedom.com

刚刚写完前一篇日志, 发现我的WordPress里的postid居然直接从78蹦到了93! 这是怎么回事?!!

Google了一下才知道, 原来是因为我把WP更新到了2.6, 而2.6里增加了一个新功能–“Revisions”, 就是类似Wiki系统里保留每个修改版本的功能. 但WP里对它的实现实在有些低级, 每一个版本都保存在数据库里并占用一个postid. 这个功能对我来说几乎毫无用处, 因为我的Blog不是一个Wiki系统, 只有我能更改它的文章, 那这个功能还有什么用呢? 难道是为了防止自己误删文章后找不到之前的版本? 拜托, 它带来的不方便之处远超出它的好处. 它会让我的数据库膨胀, 会导致SQL查询速度降低. 而且, 会让我不能方便地管理我的日志.

那么怎么关闭它呢? 很简单!

在你的WP文件夹里找到”wp-settings.php”这个文件, 搜索到这段代码

$default_constants = array( 'WP_POST_REVISIONS' => true );

把这里的 “true” 改成 “false” 就可以了.

在”wp-config.php”里加入

define('WP_POST_REVISIONS', false);

就可以了. 很多朋友指出我第一次给出的方法不好, 并且给出了下面的方法. 谢谢bbaw.

我很高兴地去除了这个新版带来的垃圾功能!

Update: 经证实, 我上面的设置还不足以完全阻止WP2.6占用我的postid, 因为Auto-save功能还是会额外占用postid. 需要完全禁用的话, 推荐一个Plugin, Disable Revisions and Autosave plugins, 使用它, 你就能很方便地禁用autosave或revisions, 或者两者都禁用 🙂

中兴白色531B无线猫ADSL(PPPOE)路由功能破解方法

本破解方法来自中国宽频网, 感谢hotqj版主的分享!

首先确认你的无线猫的型号和版本是我说的这种. 这个一般都是随中国电信“我的e家”套餐赠送的. 我曾经写过日志介绍这个套餐. 这个猫的路由功能在默认状态下是被屏蔽的, 也就是说你不能很方便地让家里所有的设备(包括我的手机)同时上网. 但在按照我的方法破解了之后, 所有连接到猫的设备都可以不用拨号, 直接上网. 轻松地实现了2台电脑, 或更多电脑同时上网的需求. 我曾经写过日志介绍这个套餐.

软件版本: V1.0.3.U02B

外观图片(在网上找的, 不是很清晰):

photo of ZTE531B

破解的方式很简单, 以admin用户名登录后, 访问下面这个地址:

http://192.168.1.1/getpage.gch?pid=1002&submenu=1&menuPos=0&nosubmenu=1&nextpage=wizard/step1.gch&title=1071&path=1071&nextjs=wizard/step1js.gch

然后顺着提示来吧.

1. 输入你本地的VPI/VCI值, 不清楚的去搜一下就知道了(搜”XX电信 VPI”). 武汉电信是VPI 0/VCI 32.

step 1

2. 选第一个就可以了

step 2

3. 输入用户名, 密码

step 3

然后提交, 不出意外的话, 会提示你连接成功. 并且, 猫的前面板上最左边的 “@” 灯会亮起.

这时先不要关闭这个页面, 请点击”工具” -> “保存设置”. 这样在断电重启后, 它仍然会自动拨号.

但是要注意的是, 这样设置之后请不要再登录管理界面. 因为我这里介绍的破解方法不是完美破解, 一旦登录就得重新设置PPPOE拨号的信息. 淘宝上有卖完美破解的531B, 那个是他拆机刷过W300了的, 有很多很强大的功能. 但我还没有看到刷机的教程.. 如果我看到了, 一定第一时间和大家分享!

还有就是记得设置好本机的 DNS. 在 Windows 里, 你应该设置”本地连接”的 TCP/IP 协议属性里的DNS. 在 Linux 里, 请编辑 /etc/resolv.conf . 写入

nameserver xxx.xxx.xxx.xxx

保存, OK.

Update: 将路由器设为 DNS 服务器也可以的(默认IP是192.168.1.1).

然后 ping 一下 www.google.cn , 如果能 ping 通, 那么恭喜你破解成功!

如果保存了设置, 关机重启后还是无法保存的话, 请先将猫恢复到出厂状态再按如上步骤操作, 应该会成功的. 因为我的猫就是这样破解的!

好了, 这样就OK了!

我的Linux日记[四]: 在Linux下播放多媒体文件

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

  1. 我的Linux日记[一]: 让Ubuntu完全支持中文
  2. 我的Linux日记[二]: 重启后设备无法正常工作
  3. 我的Linux日记[三]: 系统为何无法启动
  4. 我的Linux日记[四]: 在Linux下播放多媒体文件
  5. 我的Linux日记[五]: bash的小技巧

在Linux里工作累了, 你可能会想听听歌, 看看电影. Linux对多媒体文件的支持怎么样呢?

我觉得已经不错了, 至少能满足我的需求了.

我没有钱去购买好的显卡, 大容量的硬盘, 租用高速的网线, 或者购置 BD 光驱. 因此我不看高清视频. 如果你需要在 Linux 下欣赏高清视频, 我无法给你提供任何帮助. 我只需要听听歌, 看看 DVD, 偶尔从互联网上下载一些 DVD-RIP.

媒体播放器, 我推荐使用 SMPlayer. 这是MPlayer的一个外壳, SMPlayer 可以设置界面的语言(中文语言包里有部分菜单未汉化), 界面风格. 当然, 作为一个前端程序, 这是它该有的功能. MPlayer 之所以强大, 是因为它拥有 w32codecs 这样一个强大的解码器. 它可以 WMV, RM, RMVB, DivX 等等很多编码格式. 至于播放mp3等格式的解码器, 因为我之前用 Totem 播放 mp3 的时候, 系统自动从源中更新了解码器, 但我不清楚MPlayer是不是也调用了这个解码器. 希望清楚的同学告诉我一下.

你可以从 apt 源中获取 SMPlayer, 可以在这里找到最新的 w32codecs 的下载地址, 如果你和我一样在使用 ubuntu, 请下载 deb 包后安装.

但此时, 你可能还无法播放网页里嵌入的音频和视频文件. 没关系, 只需要在 apt 的源里找到一个叫”mozilla-mplayer”的程序安装上.

sudo apt-get install smplayer mozilla-mplayer

如果你使用 Firefox, 你可能会需要一个叫做 “MediaWrap” 的扩展来让你的 Firefox 支持更多的嵌入式多媒体文件. 它能够将 ActiveX 控件方式的网页内嵌媒体转换成 Firefox 能够支持的 Plugin 方式, 从而使 Firefox 也能够象 IE 一样正常播放它们. 你可以在这里下载到这个 Firefox 扩展.

但我发现SMPlayer虽然能支持 ape 解码, 但不支持使用cue分轨. 于是我安装了 wine 1.0, wine 了 foobar 2000 来播放 ape 文件. 我发现听歌还是foobar用着比较顺手! 我会在这个系列的下一篇日志中介绍 wine 的安装与使用(剧透: 在我配置 wine 的过程中发生了让我莫名其妙的事..). 这个下一篇不会让你等太久的!

下面是一些截图.

1. SMPlayer 的界面

Snapshot of SMPlyer

2. wine 出来的 foobar

foobar in wine

Emacs网站书签

学习使用Emacs, 最好的资料当然是Emacs Manual. 但很多人都不愿意啃这样一本大部头的英文书, 于是就有了下面这些网站.

王垠的主页 http://docs.huihoo.com/homepage/shredderyin/index.html

2003年清华的退学博士生, 曾引起全国范围的争论. 他的那篇《我的清华梦》讲述了他的经历和选择退学的理由, 推荐大家去搜索到看看. 他写的关于Linux, Emacs, LaTeX, Metapost等内容的文章, 也是很难得的好文章! 甚至还有关于滑板的内容. 值得强烈推荐!

曹乐的个人主页 http://www.caole.net/diary/index.html

这位也是清华的前辈, 也是喜欢Linux的牛人. 他的主页上有关于Emacs, Vim还有SVN的内容, 也是不错的资料.

EmacsWiki http://www.emacswiki.org/cgi-bin/wiki

关于Emacs的配置, 扩展等方方面面的技巧. 搜索功能很方便, 一些小问题都可以在这里找到解决方法.

Emacs中文站 http://www.emacs.cn

Emacs中文站的内容不是很全, 很多内容的文档都没有, 但关于dired, guns等扩展的介绍还是值得一看的.

The very unofficial dotemacs home http://www.dotemacs.de/

这个网站存储了很多人的dotEmacs文件, 你可以在里面找找看别人是怎么配置他们的Emacs的. 当然, 你也可以把你的dotEmacs文件发上去和别人共享.

Emacs中文化指南 http://man.chinaunix.net/newsoft/Emac/book.html

有些老的指南了. 在Emacs23里已经不需要像这样复杂地配置中文字体了, 在我的这篇日志里有Emacs23里中文配置的说明. 但这里的Elisp扩展的介绍还是不错的资料, 也看看吧.

这些都是别人写的资料, 如果你的问题在这里找不到答案呢? 那也可以到下面的论坛, USENET新闻组去提问. 我这里给的都是中文社区, 英文的社区没有参加过, 不是很清楚.

Ubuntu中文社区-Emacs与Vim版 http://forum.ubuntu.org.cn/viewforum.php?f=68
USENET-cn.bbs.comp.emacs http://groups.google.com/group/cn.bbs.comp.emacs/topics

cn.bbs.comp.emacs 这个组是和水木的 Emacs 版互相转信的.

Emacs入门指南[三]: 自定义配色, 使用Elisp扩展

本文在CC版权协议下发布, 转载请注明出自aifreedom.com

  1. Emacs入门指南[一]: 历史简介, 编译安装
  2. Emacs入门指南[二]: 字体美化, 窗口大小的调整
  3. Emacs入门指南[三]: 使用Elisp扩展

在这篇日志里, 我将以”color-theme”这个扩展为例, 介绍如何使用Elisp扩展, 让你的Emacs更强大.

“color-theme”能让你方便地修改Emacs的配色.

首先, 从color-theme项目的网站上找到它的下载地址, 现在最新的版本是6.6.0.

然后在你的Home里建一个文件夹(例如”elisp”), 将刚刚下载的归档解压出来. 虽然这些工作在图形界面里都能很容易地完成, 但既然这篇日志有一个”Linux”的Tag, 那就来复习一下怎样在命令行里完成这个工作吧. 这里假设你把”color-theme-6.6.0.tar.gz”文件放在了”~/download”目录里.

cd ~
mkdir elisp
cd elisp
tar -zxvf ~/download/color-theme-6.6.0.tar.gz

OK, 然后在”.emacs”里加入这样几句话. 不知道”.emacs”文件是什么? 去看这个系列的上一篇日志吧.
(add-to-list 'load-path "~/elisp")
(require 'color-theme)

第一句是将”~/elisp”这个目录加入到”load-path”变量中. “load-path”变量里记录了Emacs搜索装载文件的目录, 将”~/elisp”加入进去, Emacs才能找到我们刚刚添加的Elisp扩展文件.

第二句是调用”color-theme”扩展. 至于调用的方式, 通常在Elisp扩展的README文件里都有介绍.

重启Emacs, 在”Tools”菜单里就多出来一项”Color Themes”. 点击它, 会打开一个叫做”*Color Theme Seletion*”的Buffer. 在这里列出了很多不同风格的配色方案, 选择(用方向键或者C-p, C-n)一个配色方案, 按”i”键就可以预览配色效果. 多找找吧, 九十个配色方案里应该有你喜欢的了. 我在GTK里使用的是”Blue Mode”, 在字符界面下用的是”Aalto Light”.

选好了喜欢的配色方案, 可以回到刚才那个Buffer里, 将光标移动到你选中的那个项目上, 按”p”, 会在一个新的Buffer里打印出一段代码. 把这些代码保存到”~/.emacs-color-theme”. 还记得怎么保存文件么?

C-x C-s ~/.emacs-color-theme

下一步是去修改”.emacs”文件.

首先在”(require ‘color-theme)”前加上分号”;”将这一行注释掉.

然后在它的下面加上这样的两行

(load-file "~/.emacs-color-theme")
(my-color-theme)

之所以注释掉”(require ‘color-theme)”而仅仅只载入我们刚刚导出的文件, 是因为在启动时载入color-theme.el要比载入我们导出的文件要慢. 因此这样可以稍稍加快启动速度.

至于如何创建完全由自己定义的配色方案, 我没有研究, 因为我懒.. 不过README里有介绍, 勤快的同学自己去研究吧.

好了, 把”.emacs”文件存盘(再复习一下, C-x C-s)后重启Emacs, 看到新的配色方案了吧.

小结一下, 在Emacs里使用扩展, 首先要把存放扩展文件的路径加入”load-path”变量里, 然后要根据扩展里介绍的方法, 在”.emacs”里调用扩展(这个不一定, 如果你不需要它随Emacs启动自然就不需要添加了).

总结. 这个系列日志到此结束, 因为如果你认真读了”Emacs Tutorial”, 并认真读了我这三篇日志, 就应该能上手Emacs了. 虽然你还不能自如地配置它, 但它至少不再像个巨大的怪物一样可怕了. 这也正是我写”Emacs入门指南”和”我的Linux日记”的目的. 我希望我的日志能为初学者引路, 打开一扇通往奇妙世界的窗. 但想要真正领略其中的乐趣, 还少不了你自己的探索. 我很乐意与你分享探索未知的乐趣, 欢迎留言, 欢迎给我写信. 我的Email地址可以在About页中找到.

最后废话一句: 学好Emacs是不容易的, 是需要时间的, 但学好它能让你工作起来更顺手, 正所谓”磨刀不误砍柴功”.