Windows下Spacemacs怎么移植到不能联网的机器

已经在能联网的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无法运行。