我在 OSX 终端上使用 emacs,刚刚安装了较新的版本 23.2,它位于 /Applications/Emacs/Content/Emacs,它是一个可执行文件,因此我将它链接到 /usr/bin/emacs,并将旧版本移动到 /usr/bin/emacs.old,因为它是一个 bin 文件。
现在,当我使用“emacs -nw” (没有.emacs 和空的“.emacs.d”)时,它会打开文件,没有语法高亮(在我的情况下是 php,但这是可以理解的),当我关闭它时,出现以下错误:
警告:依赖于架构的数据目录 (/Users/david/src/emacs-dev/ftp-versions/emacs-23.2/nextstep/Emacs.app/Contents/MacOS/libexec/emacs/23.2/x86_64-apple-darwin/) 不存在。警告:独立于架构的数据目录 (/Users/david/src/emacs-dev/ftp-versions/emacs-23.2/nextstep/Emacs.app/Contents/Resources/share/emacs/23.2/etc/) 不存在。错误:字符集目录 (/Users/david/src/emacs-dev/ftp-versions/emacs-23.2/nextstep/Emacs.app/Contents/Resources/share/emacs/23.2/etc/charsets) 不存在。如果没有字符映射文件,Emacs 将无法正常运行。请检查您的安装!
如果我将 .emacs.old 移动到 .emacs 并将 .emacs.d.old 的内容放到 .emacs.d 中,则当打开某个文件时,emacs 会显示错误,说由于警告无法打开该文件,而当我关闭它时,会出现相同的警告。
奇怪的是,我的用户名不是 david,就像警告“/Users/david/...”中显示的那样,那么它是从哪里来的呢?我可以修复它吗?
谢谢。
编辑:这是我尝试打开 .module 文件时收到的错误:
无法打开加载文件:警告
编辑2:
我想要的只是在“emacs -nw”上进行 shift-select,如果有人有更好的建议,我会很高兴。我现在正在使用旧版 emacs,新版在 -nw 上有太多错误。
答案1
这帮我消除了错误:
$ sudo mv /usr/bin/emacs /usr/bin/emacs.old
现在在文本编辑器中编辑 /usr/bin/emacs 并将其粘贴到:
#!/bin/sh
EMACS_PATH=/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs
if [ $(id -u) = "0" ]; then
sudo $EMACS_PATH "$@"
else
$EMACS_PATH "$@"
fi
(将 $EMACS_PATH 替换为 Emacs 二进制文件的实际路径。)最后,使您的 shell 脚本可执行:
$ sudo chmod +x /usr/bin/emacs
无论出于什么原因,Cocoa Emacs 都不喜欢链接到 /usr/bin/emacs,但如果您从其实际路径调用它,它会毫无怨言地运行。可能是工作目录问题。
如果有人知道更好的方法,我洗耳恭听。
编辑:更新脚本以正确处理参数中的引号