多台电脑间同步 Emacs 配置文件
文章目录
如果你有 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 版上有人推荐的,用 ProjectLocker 和 DropBox 都不错,前者是免费 SVN 服务器,后者也是一个免费的文件同步工具。同样,还有一些其它的同步软件也可以试用。
通过以上三个步骤仔细设置,就可以一劳永逸地在多台电脑间同步 Emacs 工作环境,同步 org,muse 等文件了。
感谢水木社区 Emacs 版的 ahei0802,swdonline,Madsen 等兄弟们的经验分享。
文章作者 cookwhy
上次更新 2010-05-22