概要
其实在 windows 平台的 emacs 本来就是绿色软件,但是其配置文件的位置并不是可移动的,而是
用户的个人文件夹或者环境变量、注册表中的 home 变量指定的位置。
这篇博客 里面有一个将配置文件放在 emacs 文件夹中的方法,但是这个代码只能将配置文件放在
emacs 目录/share/emacs/当前版本号/
之中,而我想要把含有配置文件的文件夹放在 emacs
根目录下,这是我的代码:
(defvar program-dir
(replace-regexp-in-string "share/emacs.*/etc/$" "home/" data-directory :from-end))
(setenv "HOME" program-dir)
(load "~/.emacs.d/init.el")
将上述代码放在 emacs 目录/share/emacs/site-lisp/site-start.el
中即可,没有这个文件就新建
一个。然后在 emacs 目录中新建一个 home 文件夹来存放配置文件,就可以在启动 emacs 的时候读取了。
原理
data-directory
变量表示 emacs 文件夹下的 ect 文件夹地址,这里面含有 emacs 的地址。
data-directory
c:/TOTALCMD/tools/emacs/share/emacs/24.5/etc/
我们可以使用正则表达式将从 share
目录开始一直到字符串结尾的地址删除,这样就只保留了
emacs 目录,然后接上 home 目录就可以完整地表示配置文件的路径了。
(defvar program-dir
(replace-regexp-in-string "share/emacs.*/etc/$" "home/" data-directory :from-end))
program-dir
c:/TOTALCMD/tools/emacs/home/
后面的代码将 emacs 中 HOME 环境变量设置成配置文件的路径,再读取配置文件 init.el,这样
emacs就完全的绿色化了。
11 个赞
看到有朋友在windows环境下使用Emacs并分享经验,真心感动:grin:
……好羞耻啊喂……
这个改进很棒,点赞。补充一点,我目前把 emacs 放在整个 msys2 环境里,这样就能在 win 下得到一个很便捷的 unix 环境了。
其实我有一个装在vagrant里面的emacs的,平常可以用有x11 forward的ssh软件来连接它,就是占的硬盘空间有点大,在128G的surface上有点吃紧了_(:зゝ∠)_
Liu233w:
其实我有一个装在vagrant里面的emacs的
vagrant 不重么,可以试试 Docker(Beta) ,至少我在 OSX 已经可以让它常驻内存了:Blog | Docker
Faster and more reliable: no more VirtualBox! The Docker engine is running in an Alpine Linux distribution on top of an xhyve Virtual Machine on Mac OS X or on a Hyper-V VM on Windows, and that VM is managed by the Docker application. You don’t need docker-machine to run Docker for Mac and Windows.
1 个赞
翻了一下硬盘,当年的绿色全套 win32toolkit 都还在
今天偶然看到这个帖子,把我的配置跟大家分享下,也是在网上抄的。
下面是我的目录结构:
它们放在U盘根目录的Emacs文件夹下,前两个是Emacs程序,Files是我自己的文件,后面是多个配置。
在Emacs/Emacs-64bit/share/emacs/site-lisp/subdirs.el文件里加入下面的代码:
需要哪个配置就用哪个,这几个配置共用一个Files文件夹(主要是org文件)。
在每个配置里面加入下面的代码就可以C-x C-f直接浏览这个文件夹:
(setq default-directory (concat usb-drive-letter “Emacs/Files/”))
下面是agenda files list:
(setq org-agenda-files (list
(concat usb-drive-letter “Emacs/Files/”)))
我是这样组织的:针对 emacs 版本设置不同的 package 目录,版本兼容就在一份配置里做(太老的版本就放弃)。这样我可以随时下载运行 nightly build,玩崩了也没影响。
$ ll ~/.emacs.d/
-rwxr-xr-x 1 gqj staff 415B Jul 25 2014 README.txt
-rwxr-xr-x 1 gqj staff 7.8K Feb 6 19:43 basic.el
drwxr-xr-x 4 gqj staff 136B Aug 16 2015 bin/
-rwxr-xr-x 1 gqj staff 2.2K May 22 2016 configure
-rw-r--r-- 1 gqj staff 1.0K Feb 6 02:21 custom.el
drwxr-xr-x 3 gqj staff 102B Nov 27 2015 defuns/
drwxr-xr-x 22 gqj staff 748B Jan 4 01:36 el-get-24.5.3/ \
drwxr-xr-x 22 gqj staff 748B Jul 14 2016 el-get-25.0.95.1/ |
drwxr-xr-x 33 gqj staff 1.1K Feb 6 22:54 el-get-25.1.1/ |
drwxr-xr-x 27 gqj staff 918B Nov 18 23:55 el-get-25.1.3/ |
drwxr-xr-x 26 gqj staff 884B Jan 9 23:21 el-get-25.1.91.1/ |
drwxr-xr-x 27 gqj staff 918B Jan 9 23:20 el-get-26.0.50.1/ >
drwxr-xr-x 88 gqj staff 2.9K Aug 23 00:23 elpa-24.5.3/ |
drwxr-xr-x 83 gqj staff 2.8K Jul 1 2016 elpa-25.0.95.1/ |
drwxr-xr-x 121 gqj staff 4.0K Feb 6 02:21 elpa-25.1.1/ |
drwxr-xr-x 99 gqj staff 3.3K Nov 16 00:20 elpa-25.1.3/ |
drwxr-xr-x 97 gqj staff 3.2K Jan 8 03:15 elpa-25.1.91.1/ |
drwxr-xr-x 97 gqj staff 3.2K Jan 8 03:50 elpa-26.0.50.1/ /
-rwxr-xr-x 1 gqj staff 11K Feb 7 22:05 extra.el
drwxr-xr-x 73 gqj staff 2.4K Feb 7 22:05 init/
-rw-r--r-- 1 gqj staff 1.4K Dec 24 23:16 init.el
drwxr-xr-x 3 gqj staff 102B Nov 23 2015 private/
drwxr-xr-x 28 gqj staff 952B May 26 2016 site-lisp/
drwxr-xr-x 34 gqj staff 1.1K Nov 23 2015 snippets/
-rw-r--r-- 1 gqj staff 2.8K Dec 24 23:16 source.el
-rwxr-xr-x 1 gqj staff 1.3K Jan 8 04:16 test-startup.sh
drwxr-xr-x 4 gqj staff 136B Dec 1 2015 vendor/
以上是我的主配置,长期霸占 ~/.emacs.d/。当我想体验别人的配置,克隆到本地任意目录,然后用 runemacs 脚本去启动,在里边修改 HOME,指向配置所在目录,这样它就不会干扰 ~/.emacs.d/,这
就是绿色呀。Windows 下也是一样。
1 个赞
用这个PA.c Platform 可以很方便的把emacs便携化,优势在于
及其轻量,只有不到300K
不用改动emacs目录下任何东西;不用改动任何现有配置
emacs本体与配置分离,如果要升级emacs,可直接替换整个目录而不影响配置
简单说一下方法:
准备
下载Template 用于制作运行环境
下载Launcher 用于将上面的运行环境打包
制作
把下载的Template解压得到文件夹,命名为EmacsPortable
把emacs图标放入EmacsPortable\App\AppInfo下
按照模板说明填写EmacsPortable\App\AppInfo\appinfo.ini,其中[Control]
一栏如下:
[Control]
Icons=1
Start=EmacsPortable.exe
新建EmacsPortable\App\AppInfo\Launcher\EmacsPortable.ini,内容填充如下
[Launch]
ProgramExecutable=Emacs\bin\runemacs.exe
CommandLineArguments=--insecure
SingleAppInstance=true
WaitForProgram=false
[Language]
Base=%PortableApps.comLocaleglibc%
Default=zh_CN
[Environment]
EMACSRUNTIME=%PAL:AppDir%\Emacs\bin
HOME=%PAL:DataDir%\Home
LANG=%PAL:LanguageCustom%
PATH=%EMACSRUNTIME%;%PATH%
绿色化完成之后的目录结构如下:
qgymib@qgymib-PC MSYS /d/PortableApps/tmp/EmacsPortable
$ tree
.
├── App
│ ├── AppInfo
│ │ ├── appicon.ico
│ │ ├── appicon_128.png
│ │ ├── appicon_16.png
│ │ ├── appicon_32.png
│ │ ├── appinfo.ini
│ │ └── Launcher
│ │ ├── EmacsPortable.ini
│ │ └── Splash.jpg
│ ├── DefaultData
│ │ └── Home
│ ├── Emacs
│ └── Readme.txt
├── Data
│ └── Home
├── EmacsPortable.exe
├── EmacsPortable.ini
├── help.html
└── Other
├── Help
│ └── Images
│ ├── Donation_Button.png
│ ├── Favicon.ico
│ ├── Help_Background_Footer.png
│ ├── Help_Background_Header.png
│ └── Help_Logo_Top.png
└── Source
├── EmacsPortable.ini
├── LauncherLicense.txt
└── Readme.txt
把你的个人配置.emacs.d
放在EmacsPortable\Data\Home下即可
最后说一点点
其实归根到底是使用这个工具更改了emacs所在运行环境的HOME变量,把它指向了一个相对目录。用这个SDK其实只是因为我的电脑上使用了大量PortableApp.com提供的绿色软件,保持形式统一而已。
最后的最后
看到这儿的小伙伴们有福了,这儿 可以直接下载我已经封装好的环境
使用方法:
把你的emacs整个目录丢到EmacsPortable\App下。这里有个空的Emacs文件夹,是为了提示目录需要放在此处的。emacs.exe的路径为EmacsPortable\App\Emacs\bin\emacs.exe
把你的配置丢到EmacsPortable\Data\Home下。.emacs.d的路径为EmacsPortable\Data\Home\.emacs.d
Have fun!
7 个赞
如果多个portableApp相互调用呢,我有点想吧Git也这样打包,但是如果这样,emacs调用git是不是就不方便了啊