Windows上用Emacs 27.1要做哪些功课?

中午安装了新出的win-emacs 27.1, 打算长期服用win版本。因为wsl运行doom-emacs好龟速,没法用。 image

上手用了一下,令人欣喜的是eshell这个在Linux上比较鸡肋的shell,在win上可能会有严重依赖。

以前没有在win上用过emacs, 隐隐约约感觉前面是一条很长的路。

请教各位,win版emacs哪些功能有,哪些功能没有,都有哪些坑?

若要实现与linux上基本相当的功能需要做哪些工作?

我一直在Windows下使用Emacs,感觉挺好。主要有以下几点要折腾:

  1. 编码问题。建议启用Win10的beta UTF-8支持 日历使用英文格式。
  2. 字体设置
  3. 环境变量
    很多依赖可以通过msys2安装
    或者通过chocho ,npm 安装
    并加入环境变量。
  4. 目前window下没法用EAF,比较遗憾,不过我用Chrome也还好,更方便书签跨平台分享。
  5. 忍受稍微慢一点的启动速度,不过可以用Lazyload弥补。
1 个赞

编码问题放在第一位真有先见。

把系统改成bata utf-8之前和修改重启之后,这几个字符都显示不出来。

3:15 是时间,后面跟着的是 PM,在后面收 system load average for past 1 minute.

C-x C-c管不了Emacs,报错提示:

These default coding systems were tried to encode text
in the buffer ‘ *temp file*’:
  (prefer-utf-8 (45 . 4194262) (46 . 4194268) (47 . 4194248) (48 . 4194301))
  (utf-8 (45 . 4194262) (46 . 4194268) (47 . 4194248) (48 . 4194301))
However, each of them encountered characters it couldn’t encode:
  prefer-utf-8 cannot encode these:        
  utf-8 cannot encode these:        

Click on a character (or switch to this window by ‘C-x o’
and select the characters by RET) to jump to the place it appears,
where ‘C-u C-x =’ will give information about it.

Select one of the safe coding systems listed below,
or cancel the writing with C-g and edit the buffer
   to remove or modify the problematic characters,
or specify any other coding system (and risk losing
   the problematic characters).

  raw-text no-conversion

另外,除了chocho, msys2, 在用scoop好像也挺不错。

我是直接设置时间,星期,等都为英文格式,懒得折腾编码。曾经折腾过很久,效果不理想。高手的话,可以折腾一下 :grin: scoop没用过,听说还可以。

daemon不一定需要的,启动问题可以通过lazyload,autoload等技术解决。我试过daemon,结果是它加载的内容好像不全,有些内容和正常加载不一致。可能是我姿势不对。

我全用cygwin的,包括emacs-w32,grep,ag,texlive,git等一系列

cygwin下速度如何,我先前在msys2下试过,不能忍受的慢,换到WSL2下了

用scoop配置的包,从window-terminal中就挺好用。

速度还能接受。magit调git稍微有些慢。不过不在cygwin里用也是很慢。有条件还是首先Linux,其次Mac。

不知道什么原因,重新安装了wsl-ubuntu之后,启动速度突然变得超快。 在windows中启动:11.963s (emacs 27.1)

在wsl中启动 1.771秒

二者是同一份配置文件。 这样的话,路就好走了。

请问这个好用吗? 毕竟beta版,网上查了下兼容问题不少呢

自己好用,但和别人协作不好用。但为了Emacs,只能开着。开了这个后,你电脑上编辑的一些文件拷贝到其他同事的电脑上可能会出现乱码。因为他们大都没开这个选项,没法通过UTF-8解码中文。

路径的问题,由于windows上“c:/Windows/system32"在最前面,导致有些命令用不了比如 find,

PS C:\Users\gaowei> scoop which find
C:\Windows\system32\find.exe

无论用find还是用find.exe全部调用的是windows的命令,如果直接在emacs中用grep-find命令会报错:

find . -type f -exec grep  -nH -e diary "{}" ";"
Access denied - .
File not found - -TYPE
File not found - F
File not found - -EXEC
File not found - GREP
File not found - -NH
File not found - -E
File not found - DIARY
File not found - ;

迂回的解决方案是安装busybox,用grep-find的时候加前缀:

Grep started at Thu Aug 27 13:24:07

busybox find . -type f -exec grep  -nH -e diary  "{}" ";"
./01.Screen.org:113:On a display that supports a mouse, you can use the mouse to choose a command from the menu bar. An arrow on the right edge of a menu item means it leads to a subsidiary menu, or submenu. A '...' at the end of a menu item means that the command will prompt you for further input before it actually does anything.

我是emacs内自定义了PATH变量,定义时就把c:/Windows/system32放最后面,应该就可以了

(setenv 
 "PATH" 
"d:/text/emacs/bin;d:/swap/git/cmd;d:/server/php7;d:/server/node;d:/server/python;D:/server/msys/usr/bin;c:/windows/;c:/windows/system32/;")
1 个赞

我今日也下载了emacs27,好像跟26.3差别不大啊,可能我只是用的包比较少。不过lsp-mode,是快了不少是真的。

谢谢,仿照你的设置,也把PATH修改了, wsl-emacs和windows用的一份配置。

(if (eq system-type 'windows-nt)
    (setenv
     "PATH"    
     "C:/ProgramData/scoop/shims;C:/Users/gaowei/scoop/shims;C:/Users/gaowei/.emacs.d/bin;C:/Users/gaowei/AlphaApps;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0;C:/Windows/System32/OpenSSH/;C:/Users/gaowei/AppData/Local/Microsoft/WindowsApps")
  nil)

windows 上用emacs 说多了都是泪,现在啥都懒得折腾,可能年纪大了折腾不动了。 编码问题?显示乱码我就在外面开个powershell

eshell挺好好用的。

帮忙看看这个问题,

为什么不能工作?

echo ${echo $HOME}
1 个赞