Posted on 17-11-2012
Filed Under (技术) by waterlin

Emacs-w3m 的基本使用方法和 w3m 本身是一样的,所有的快捷键都和 w3m 的快捷键一样。所以,对于熟悉 w3m 的人来说,使用 Emacs-w3m 是十分容易上手。

虽然 w3m 的手册 已经把 w3m 的所有操作都描述得很清楚了,但是我依然想强调 w3m 的几个使用要点,在我最开始使用 Emacs-w3m 的时候,这几点对我还真造成了一些困扰。

  1. 在 w3m 里如何填写 html 页面的表单?

    表单输入框在 w3m 显示为红色(或是与页面相反的颜色),把光标移动到表单输入框上面并按回车即可开始输入。

  2. 如何输入一个新网页地址?

    用快捷键 SHIFT-U 或使用大写字母 ‘U’ 来开启浏览新网页。

  3. 如何获得一个网页链接指向的地址?

    先移动光标到这个链接上,然后使用 ‘u’ 即可获取链接地址。Emacs 将会拷贝链接地址到系统的剪切板。

我是在什么场景下使用 Emacs-w3m 的呢?与其它浏览器(例如 Chrome, Firefox)相比,有什么更特别的理由让我们来使用 Emacs-w3m 呢?

最开始我使用 Emacs-w3m 仅仅只是为了好玩,仅仅是想享受文本浏览器提供给我们的清静环境。但是现在我却用 Emacs-w3m 来干正事,下面是三种我使用 Emacs-w3m 的情形:

  1. 上班时用来看一些不想让其它同事看见的网页,你知道的,办公室的台式机、开放式的环境,不想让别人知道你一直在上 BBS 或是刷邮箱。通过使用 w3m,可以让你刷 BBS 看起来是在干正经事,因为这个丑陋的界面实在是让人太难分辨真伪了,哈~~
  2. 用 Emacs-w3m 来从 HTML 拷贝富文本内容到 Emacs Org 文件,当我用 Org Mode 来写博客或是记笔记的时候,经常需要从网上拷贝一些内容下来,并且我不希望自己手动编辑里面的超链接。所以,使用 Emacs-w3m 和 org-w3m 可以解决这一问题。

    将来有空的时候,我还想写一个 Emacs 插件,用来直接从 Chrome, Firefox 选定的内容区域里直接拷贝内容并转换为 org-mode 格式,并且会把图片也缓存到本地。到时候直接从网页摘录内容及图片就会十分的方便,你可以把它看成一个 Evernote 的 Emacs 版本。

  3. 用来寻找我博客文章的链接。当我在写博客的时候,有时候需要引用以前写的一些文章,这个时候我就用 Emacs-w3m 来找到它并且把链接地址粘贴到正在写的 org 文章里。

是不是很神奇?首先让 Emacs 成为你的时间杀手,然后 Emacs 最终会帮助你节省大量的时间。

(0) Comments    Read More   
Posted on 15-11-2012
Filed Under (技术) by waterlin

以前在 Emacs Org Mode 里记笔记或是写文章时,如果需要从网页上摘录内容,都是直接拷贝下来,贴到 Org 文档里,这样就变成了纯文本的文字。

这样做虽然简单方便,但是有一个缺点:如果拷贝的文字里面有一些超链接或是格式文字,则需要手动把超链接在 Org 文档里添加上去。这样做太过麻烦,并且容易漏掉有效的超链接。

今天发现一个东西,可以直接实现从 w3m 格式拷贝内容到 Org 文件,中心思想是:用 Emacs-w3m 实现网页浏览,并且装上 org-w3m 插件,然后就可以用命令 M-x org-w3m-copy-for-org-mode 或是 C-c C-x M-w 快捷键来完成格式拷贝操作,自动将 HTML 内容转换成 Org 的语法标记。

这么看,org-w3m 是一个好东西呀,哈~~

另外,如果能同时直接从网页上拷贝图片并缓存到 org 文件所在的本地目录就好了!哪天有空我来轮一个 Emacs 扩展实现这个功能。

(0) Comments    Read More   
Posted on 13-11-2012
Filed Under (技术) by waterlin

Emacs Marmalade 提供了一种自动安装 Emacs 扩展的功能,就像 Ubuntu 的新立得一样可以自动安装软件。

使用这个功能来给 Emacs 24 安装扩展,那是相当的方便。

Emacs 24 已经内置了 Marmalade,我们可以用下面的代码来开启它:

(require 'package)
(add-to-list 'package-archives 
    '("marmalade" .
      "http://marmalade-repo.org/packages/"))
(package-initialize)

然后我们可以用命令 M-x list-packages 来列出软件包清单,选择一个并且安装。

如果你知道你所要安装的软件包的名称,也可以直接用命令 M-x package-install [RET] [Package-name] 来安装,这样更加方便。

(0) Comments    Read More   
Posted on 13-11-2012
Filed Under (技术) by waterlin

我们经常需要在 Emacs 对齐一段内容,比如说缩进四个空格,这不管是在代码或是文字内容编写方面,都十分有用。尤其是在天天都需要使用的 Org 文件里,快捷的对齐更是提高文字编辑速度不可缺少的一部分。

例如,一般在 Org 文件里引用一段代码时,如果代码里有 # 开头的内容,则需要使用这个缩进功能,否则容易在发布成 html 时被错误的解析。因为,在 Org 的解析器看来,# 代表着需要转义的区域,比如下面这段内容就需要缩进,否则 #include 会干扰生成的效果:

#+begin_src cpp
#include <iostream>

int main()
{
    return 0;
}
#+end_src

可是,当你需要从代码文件里拷一段代码到 Org 文档里时,基本上都会碰到上面这种情况,#include 这个东西可是靠在最左边的!当你把 Org 文档输出为其它格式时,这个 # 记号会让你痛不欲生的。

这时,按照习惯,我们需要把这个代码块向右对齐两个空格或是四个空格,然后所有的 Org 转义问题就解决了。

要实现这个操作很简单,有两种方法可以实现快捷缩进:

第一种方法,用命令 indent-rigidly 并且带上需要缩进的空格数。

例如,当选择好一个区域后,用命令 C-u 4 M-x indent-rigidly 就可以让这个区域缩进 4 个空格,用命令 C-u -4 M-x indent-rigidly 就可以让这个区域减少 4 个空格的缩进。

你也同样可以使用键绑定 C-x <TAB> 来替代 M-x indent-rigidly 这个命令。

第二种方法,我们也可以使用列编辑模式。

我们依然先选择好一个区域,然后通过下面的列编辑方式来添加 4 个空格的缩进:

  1. 跳转到想缩进的第一列;
  2. 用 C-<space> 来标记起始位置;
  3. 把光标移动到需要编辑结束的地方;
  4. 用命令 C-x r t 来进入列编辑模式(或如果你是在 CUA 模式下用 C-<RET>),然后输入四个空格(即你想进行列操作的内容,也可以是其它内容),回车后即可完成编辑操作。

相对来说,第一种方法更加简单实用,而第二种方法可以实现更加复杂的编辑功能。

(0) Comments    Read More