已经在能联网的64位Windows 7台式机配置好Spacemacs,想移植到公司不能联网的台式机电脑(同样是64位Windows 7系统)使用,直接复制.emacs.d和.Spacemacs.d和x86-64这三个文件夹貌似无效,请问还需要什么操作?
修改 C:\Users\主机用户名\AppData\Roaming.emacs
加入以下代码
(setq use-default t)
(when use-default
(setq user-emacs-directory "C:/你的spaceemacs配置路径/.spacemacs.d/")
)
(load (expand-file-name "init.el" user-emacs-directory))
分两部分,第一部分是emacs的portable:
#!/bin/sh
BIN_DIR=$(readlink -m $0/..)
RELOCATE=
APP_DUMP=true
for opt in "$@"; do
[[ "$opt" == "-l" ]] || [[ "$opt" == "--load" ]] && RELOCATE=true
[[ "$opt" == "-dump-file" ]] || [[ "$opt" == "--dump-file" ]] && USE_DUMP=
done
INIT_OPT=
if [[ -z "$RELOCATE" ]] && [ ! -f "$HOME/.emacs" ] \
&& [ ! -f "$HOME/.emacs.d/init.el" ]; then
[[ -f $BIN_DIR/../.emacs ]] && INIT_OPT="-l $BIN_DIR/../.emacs"
RELOCATE=true
fi
if [[ -n "$RELOCATE" ]]; then
export PATH=$BIN_DIR:$PATH
export EMACSDOC=$BIN_DIR/../share/emacs/27.1.50/etc/
export EMACSDATA=$BIN_DIR/../share/emacs/27.1.50/etc/
export EMACSLOADPATH=$BIN_DIR/../share/emacs/27.1.50/lisp
export EMACSPATH=$BIN_DIR/../libexec/emacs/27.1.50/x86_64-pc-linux-gnu/
[[ -n "USE_DUMP" ]] && INIT_OPT="$INIT_OPT -dump-file $EMACSPATH/emacs.pdmp -q"
fi
exec $BIN_DIR/emacs-27.1.50 $INIT_OPT "$@"
第二部分是dot-emacs的portable:
(defvar portable-home-dir (file-name-directory (or load-file-name (buffer-file-name))))
(setq spacemacs-start-directory (expand-file-name ".emacs.spacemacs/" portable-home-dir))
(defvar sl-spacemacs-init (expand-file-name "init.el" spacemacs-start-directory))
(let ((dotspath (expand-file-name ".spacemacs" portable-home-dir)))
(when (file-exists-p dotspath) (defvar dotspacemacs-filepath dotspath)))
;; load the spacemacs
(load-file sl-spacemacs-init)
谢谢您的回复,但貌似还是不行。 加了您这段之后,我测试了,的确可以读入.spacemacs.d的init.el,但有很多配置没有读入,打开Emacs界面和原版一样。 请看图片,“(defun dotspacemacs/user-config”之前与之后的给eshell配置的快捷键(f7、f9)都有效,但user-config里的配置无效(f5)。
请问还要什么操作?好像(defun dotspacemacs/layers ()和(defun dotspacemacs/init ()以及(defun dotspacemacs/user-config () 等Spacemacs相关的设置都没有生效,message中也没有相关的报错或警告。这些Spacemacs之外的设置能正常生效。
这些是不是相当于设置好了,但是Emacs启动不会读取?是不是还需要在哪设置读取?
我还不太明白Spacemacs的运行机制,我只是将.emacs.d和.Spacemacs.d和x86-64这三个文件夹复制到新电脑,x86-64/bin里的runemacs.exe自动读取c:\Users\lxs\AppData\Roaming.emacs,找到配置目录并读取init.el,原来从Spacemacs git clone并且由Spacemacs自动下载了很多包的.emacs.d文件夹需要怎么处理?直接复制到新电脑就可以吗?
感谢您的回复,您指的是不是Linux环境下移植?第一部分是在Emacs安装目录运行这个bash代码,第二部分是在.emacs文件加入这些elisp代码吗?
我这是Windows系统,应该运行不了bash代码吧?有没有Windows版的?
后来直接将.emacs.d和.spacemacs.d这两个文件夹也复制到c:\Users\lxs\AppData\Roaming\文件夹下面,能正常使用了。算是基本解决了。
不过又出现了一个新问题,win7台式机某次挂机重启电脑后Spacemacs不能运行Python,提示:“ python不是内部或外部命令”。
重启前能正常使用,再手动将anconda/python.exe和anaconda/scripts的路径添加到环境变量PATH,cmd输入Python能正常使用,anaconda navigation和spider也能正常使用,就是Spacemacs无法运行。