Posted on 08-06-2010
Filed Under (技术) by waterlin

我之前是用 SVN 来在多台电脑间同步 Emacs 配置文件,主要是担心 Dropbox 不安全,导致文件随便就删掉了。没办法,Dropbox 的操作太便捷了。

现在发现,其实可以把 SVN 的文件也一起用 Dropbox 同步,这样就可以在任意一台电脑上同步所有文件在 SVN 里的状态,也可以同步 Gnus 使用的大量变化快速、不方便用 SVN 同步的文件。

不过我很害怕,不小心把 Dropbox 里的文件一下子全删掉了,Dropbox 虽然有文件恢复功能,不过我还是用 SVN 一起来同步比较保险。

哈,好吧,我承认,到目前为止,Dropbox 完胜了!

(6) Comments    Read More   
Posted on 08-06-2010
Filed Under (技术) by waterlin

Linux 下可以很方便地使用 EasyPG 来对文本文件进行加密,最近工作迁移到了 Windows 下,所以,有些东西也得在 Windows 下配起来。

要在 Windows 下使用 EasyPG,装一个 GPG4Win 就基本上可以替换 Linux 下的 GnuPG 了。

安装成功后,会自动在系统的 PATH 里添加一个执行路径,默认安装的情况下路径是

c:/Program Files/GNU/GnuPG/pub

当然,你也可以在 .emacs 里指定 GPG 的可执行文件路径,类似下面的代码就可以(声明:这个代码是我抄 chunhui 的,我没仔细测试,有问题找他!):

(custom-set-variables
  '(epa-file-name-regexp "\\.gpg\\(~\\|\\.~[0-9]+~\\)?\\'")
  '(epg-gpg-program "c:/Program Files/GNU/GnuPG/pub/gpg2.exe"))

如果提示如下错误,肯定是你的 GnuPG 安装或配置得有问题,从而导致 Emacs 不知道如何去读取该文件:

File exists, but cannot be read

感谢水木社区 chunhui 的代码与帮助。

(1) Comment    Read More   
Posted on 22-05-2010
Filed Under (技术) by waterlin

如果你有 Windows,Linux 等多台机器,你可能要试着在多台机器间同步你的 Emacs 配置文件,这样才用得爽嘛!我就是这样,采用下面的步骤就可以实现此目的:

1) 尽量把与本地路径相关的东西放到 .emacs 文件,而把其它通用的内容放到其它 el 文件里

我用 svn 管理我的 Emacs 配置文件,扩展的 el 文件我也保存到 SVN 里面,这样,随便到哪台机器上只要把配置文件 check out 出来,就可以使用了。

当然,在不同的机器上,会面临字体、文件路径等问题,这时,需要根据各台机器的实际情况,单独配置一下。

可以用 (system-type) 来识别当前机器的操作系统版本,同样,你也可以根据更多的属性,如用户名等来判断配置文件应该设置哪些参数。

如果对于多台同样类型的机器,你也可以根据 (system-name) 来判断一下你的 Emacs 所在路径。

这两种方法性质类似,完全可以根据自己的属性灵活选用这两种识别机器的方法。

当要在 Window 或是 Linux 机器上识别、配置不同的代码的时,可以参考下面的例子代码:

;;如果是 Windows 平台,则进行如下设置
(if (eq system-type 'windows-nt)
            ;;current system is Windows, do some specific setting for Windows
            ;;(message "Current system is Windows")
            ;;use Cygwin as bash
            (let* ((cygwin-root "d:/cygwin")
            (cygwin-bin (concat cygwin-root "/bin")))

            ;;根据不同的 Windows 系统设置不同的路径
            ;;设置公司电脑的路径
            (if (string-match (system-name) "SCUT-9C14ED3B4C")
                (setenv "HOME" (concat cygwin-root "/home/water")))
            ;;设置家里电脑的路径
            (if (string-match (system-name) "32283744FF164E6")
                (setenv "HOME" (concat cygwin-root "/home/water/water")))

            (setenv "PATH" (concat cygwin-bin ";" (getenv "PATH")))
            (setq exec-path (cons cygwin-bin exec-path)))
            (setq shell-file-name "bash")
            (setq explicit-shell-file-name "bash")

            ;;else current system is Linux, do some specific setting for Linux
            (if (or (eq system-type 'cygwin)
                    (eq system-type 'gnu/linux)
                    (eq system-type 'linux))
                         (message "Current system is Linux, please do some specific setting here")))

如果要专门针对某一类型的系统设置字体等,就可以参考下面的代码来设置:

;; font set
(if (or (eq system-type 'cygwin)
        (eq system-type 'gnu/linux)
        (eq system-type 'linux))
                 (set-default-font "Courier 10 Pitch-12")
                 (set-default-font "Courier New-14"))

如果专项设置的代码量比较大,还可以把不同平台的代码分成几个文件,导入不同的文件即可。

2) 选择需要同步的文件

并不是所有的配置文件都需要同步,我也不赞同一股脑地把所有的文件同步,有一些配置文件完全可以根据平台的需要选择不同步。

像我的习惯就是 .ido.last, .recentf, .emacs.desktop 这些文件就不同步了。

因为家里的电脑和公司的电脑,干的事情基本上是不同的,没有必要搅成一堆,这样也不容易产生冲突。再一个,回家了,就不干公家的事情了嘛!

3) 文件远程同步软件或工具

至于文件同步工具,水木社区 Emacs 版上有人推荐的,用 ProjectLockerDropBox 都不错,前者是免费 SVN 服务器,后者也是一个免费的文件同步工具。同样,还有一些其它的同步软件也可以试用。

通过以上三个步骤仔细设置,就可以一劳永逸地在多台电脑间同步 Emacs 工作环境,同步 org,muse 等文件了。

感谢水木社区 Emacs 版的 ahei0802,swdonline,Madsen 等兄弟们的经验分享。

(3) Comments    Read More   
Posted on 10-03-2010
Filed Under (技术) by waterlin

通过使用 Jabber 插件,可以在 Emacs 里进行即时通讯聊天,相关截图可以在 Emacs-wiki 上看到,怎么样,很不错吧?!我们可以通过 Jabber 来在 Emacs 里使用若干即时通讯工具,这里就以 Gtalk 为例简单说明一下 Jabber 的基本使用方法。

Ubuntu/Debian 上可以直接从源里安装 emacs-jabber 的软件包。

例如,我要配置 Google Talk 的话,可以在 .emacs 里用下面的方法来配置:

(setq jabber-account-list
      '(("waterlin.org@gmail.com"
         (:network-server . "talk.google.com")
         (:connection-type . ssl))))

配置好了以后,可以用 M-x jabber-connect 来登陆,它会让你输入 JID,你直接输入你设置好的邮箱名即可。

登录成功后,Emacs 会有一个 \*-jabber-roster-\* 的 buffer,从里面就能找到你想聊天的人一起聊天。

和某个人聊天的话,就用 M-x jabber-chat-with 命令,输入某个人的帐号,或者直接从 \*-jabber-roster-\* buffer 里找到某人的帐号并按回车,就会出现 \*-jabber-chat-:-person-\* 这样的一个 buffer。在这个 Buffer 里,你就可以和他/她聊天了。如果对方有消息过来,Emacs 会在 minibuffer 里提示对方的名字,提示你有新的消息。

聊天时,用回车就是发送消息,用 C-j 就是新建一行输入消息。

默认情况下,你会显示为在线状态,如果需要修改状态,例如修改为 away,可以用命令 M-x jabber-send-presence 或快捷键 C-x C-j C-p 来切换状态。

其它常用命令:

  • 要退出用 M-x jabber-disconnect 命令即可;
  • 要添加某人为好友,可以用命令 M-x jabber-send-subscription-request
  • 用命令 M-x jabber-customize 可以对 jabber 进行基本的配置。

这个玩意不错,尤其是作为 Linux 下面的 Gtalk 客户端挺好的,不仅能聊天,同时也支持在 Gmail 里保存聊天记录。

(0) Comments    Read More   
Posted on 21-02-2010
Filed Under (技术) by waterlin

之前介绍了如何在 Emacs 里用 EasyPG 来加密文件,可是一旦自己想重新设置加密用的密钥( Key,类似于密码的东东),这时,要怎么办呢?

其实很简单,只要在修改文件后需要保存的时候,输入一个新的 Key 就可以了,下面是详细的步骤:

1. Open the file in emacs.

2. Enter the original passphrase when prompted.

3. Type a letter then remove it (to convince emacs the file unchanged).

4. C-x C-s will prompt you for a new passphrase.

如果你为了让 Emacs 在当前的 Session 里记住密钥,而在 .emacs 文件里用到了下面两行代码:

;; save the password
(setq epa-file-cache-passphrase-for-symmetric-encryption t)
;; auto-save
(setq epa-file-inhibit-auto-save nil)

可以先注释掉再进行以上操作。

当然,你也可以通过 gnupg 来进行类似的修改。不过对于密钥的修改不会太频繁,我觉得以上的方法足够简单方便了。

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(1) Comment    Read More   
Posted on 23-01-2010
Filed Under (技术) by waterlin

对于一些比较隐私的文件,比如说帐号、密码等,如果不用文件记下来则容易忘记;而用普通文件记下来,总是觉得有点不放心,哪天电脑丢了怎么办?

Emacs 支持加密文件的操作,总的来说,比较好用的有下面这些方法

  1. 最简单的可能是 ange-crypt 包:

    把下面的代码添加到 .emacs 文件里

    (load <span style="color: #ffa500;">"ange-crypt"</span>)
    

    或者用命令 M-x ange-crypt-mode 来启动这个模式。

  2. EasyPG 应该是比较好用的,EmacsWiki 上也专门有相关的讨论

    EasyPG 的安装很简单,把下面的代码放到 .emacs 文件里:

    <br />(require 'epa-file)<br />(epa-file-enable)<br />

    这样,打开或是保存以 .gpg 为后缀的文件,Emacs 就会提示输入加密用的关键字。

下面讨论一些有关 EasyPG 使用上可能碰到的问题:

  1. 如果希望在打开以 .gpg 为后缀的加密文件时,也能进入相应的 mode,我们只需要把 .gpg 作为普通文件的后缀添加到普通文件名后面。比如说,一个使用 org mode 文件原来应该命名为 test.org,现在我希望通过 Emacs 来对它进行加密处理,则我可以把它保存为 test.org.gpg,这样下次打开该文件时,Emacs 会自动进入相应的 org mode。

  2. 如果在使用 EasyPG 的时候,提示下面的错误

    <br />byte-code: Opening output file: Searching for program, no such file or directory, gpg   <br />

    则表示没有安装 gpg 这个程序,可以下载安装。

当然,如果希望用 EasyPG 用得爽,仅仅有上面这些设置是远远不够的,还应该进一步的设置:

  1. 默认使用对称加密

    每次保存加密文件,Emacs 都会弹出来问你要用什么方式来加密,很烦人!把下面的语句扔到 .emacs 文件里:

    <br />;; Using symmetric encryption always<br />(setq epa-file-encrypt-to nil)<br />

    这样就可以让 Emacs 每次都使用对称加密。

  2. 不要每次保存加密文件的时候,都让我输一遍密码!

    每次保存加密文件的时候,Emacs 都要让你输一遍密码。我相信你不想每次保存文件的时候,都让你输一遍密码吧?用下面的代码可以让 Emacs 记住密码并自动保存文档:

    <br />;; save the password<br />(setq epa-file-cache-passphrase-for-symmetric-encryption t)<br />;; auto-save<br />(setq epa-file-inhibit-auto-save nil)<br />

    当然,不用担心,Emacs 只是在当前这次 Session 记住密码,下次你重启 Emacs 要再次打开这个文件的时候,Emacs 依然会向你要一次密码的。

感谢水木社区 Emacs 版上 Dieken 大牛的笔记,我只是做了一点工匠性质的工作,把它加工成我们普通人能看懂的笔记 :)

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(5) Comments    Read More   
Posted on 20-12-2009
Filed Under (技术) by waterlin

不知道为什么,我的 Emacs 自带的 cmake-mode.el 文件是比较旧的版本,与最新的版本相比,少了好几个函数。

可以从 CMake 官方网站的 Editor Syntax Files 下载最新的 Emacs 的 cmake-mode.el 或是 Vim 的扩展包,方便编辑。

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

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

Linux 下,默认情况下 Emacs 里用 M-w 并不能复制内容到系统的剪切板,如果需要让 M-w 能复制内容到剪切板的话,可以把下面的这一行语句加入到 .emacs 里:

(setq x-select-enable-clipboard t)

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

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

很多时候,我们的程序目录里并没有像样的版本管理功能(比如自己的一些小工具),过了一段时间,你很可能会发现你不记得以前修改了一些什么、已经实现了哪些功能,甚至于,你都忘记了你的代码里还有啥小 Bug 没处理掉。

Emacs 自带了一个快速日志记录功能,即 Change Log 的功能。一个 Change Log 文件按时间顺序记录了你修改程序的时间、原因,以及一些你想写下来备忘的内容。当然,Emacs 只会自动帮我们生成记录的时间、修改的文件名,其它的内容还是需要我们自己来补充。

默认情况下,Emacs 会用当前目录下名为 ChangeLog 的文件来记录这些 log 信息,该文件可以记录该目录以及所有子目录的日志。

用快捷键 C-x 4 a 或是命令 M-x add-change-log-entry-other-window 就可以为当前编辑的文件在 ChangeLog 文件里添加一条日志,Emacs 会自动创建时间戳和文件名,剩下的内容我们自己补全。

类似于其他 Emacs 提供的功能,我们可以根据自己的喜好来设置参数,详情看 Chang Log 的官方文档

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

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

前几天用设置 Emacs 文件系统的编码格式的方法,重新设定了 Emacs 默认的编码格式。

可是又来了一些问题。当以前一些文件不是用 UTF-8 来编码的时候,Emacs 默认用 UTF-8 来打开就会产生混乱。比如说我的 Muse 文件就是用编码

  chinese-iso-8bit

来保存的(至于为什么 Muse 会用这个编码,我也不知道),现在 Emacs 一打开 Muse 文档就乱码。

虽然我可以用 M-x revert-buffer-with-coding-system 来用指定编码(这里即是 chinese-iso-8bit)重新正常地读入文件,但是因为我把默认的编码设为 UTF-8 了,Muse 文档发布成网页后,乱码问题依然存在。

经过实践发现,最好的解决办法就是把 Muse 文档的编码统一改为 UTF-8 的编码格式。事实上,现在我们也没有不使用 UTF-8 编码的理由!

需要修改显示为乱码的现有文件的编码格式,则可以用下面几个步骤:

  1. 用命令 M-x revert-buffer-with-coding-system 来用指定编码重新读入文件,以便正常显示;
  2. 用命令 M-x describe-coding-system 查看一下当前的文件格式是否和默认的 UTF-8 一样;
  3. 如果不一样,就用命令 C-x <RET> c ( M-x universal-coding-system-argument ) 来设定下一步操作的编码格式,我们设定为 UTF-8,然后再用 C-c C-s 命令保存当前的文件。

这样,我们就完成了修改当前文件编码格式的任务。

原创文章,如转载请注明:转载自细节之锤 [ http://blog.WaterLin.org/ ]

Copyright © WaterLin.org. All rights reserved.

(2) Comments    Read More