windows环境下搭建emacs的编程环境的最简实践是啥

如题,win10, GNU Emacs 29.0.50 (build 1, x86_64-w64-mingw32

wsl2

archlinux

windows rerminal

虚拟机,不带图形界面的archlinux,然后mintty通过ssh连上去,在终端里面开的emacs

要看你的开发环境是 Linux 下的还有 Windows 下的。

如果你开发 Windows 应用,可以安装 msys2,然后自己按照 Emacs 的官方文档编译 Emacs 并安装相关依赖。这个方式用 magit 会比较慢,其他都还不错的,我天天用。

我自己是用的一个编译脚本自动编译,想要编译 Emacs 29,Emacs 30 或具体的 Commit,都比较方便。

如果你的开发环境是 Linux,建议安装 WSL2,如果想用 GUI的 Emacs ,就安装 pgtk 版本的Emacs。

1 个赞

WSL2… zsbd

server-mode + Tree-sitter + LSP + 漂亮的 UI, 单纯写代码是好的, 但是 debug 体验还很原始

谢谢,补充下,目前是在win10下学用C语言写hello world这个初初级阶段

用的是dev c++编译,想转到emacs上来

如果只是写写 hello world 一类的程序,那有最基础的运行环境 gcc 就可以了

(Windows 下用 clang 也可以,只是把下面提到 gcc 的地方都改成 clang 就可以了)

如果不借助第三方包的话,我自己用过这两种方法:

  1. compile

    假设你有一个基础的 tmp.c 文件

    // -*- compile-command: "gcc -Wall -o tmp tmp.c && ./tmp" -*-
    // 上面这行是 compile 命令用到的,可以不用或者改成自己常用的编译命令
    // 推荐使用 tempel 或者 yasnippet 这种模板系统自动生成
    
    #include <stdio.h>
    
    int main() {
      char str[11];
    
      printf("input a str: ");
      scanf("%10s", str);
    
      printf("hello, %s", str);
    
      return 0;
    }
    

    在这个 buffer 页面,按下 C-u M-x compile,补全你的编译命 令,这个文件的话编译命令就是 gcc -Wall -o tmp tmp.c && ./tmp。这 里的 C-u 起的作用是使编译后进入 comint-mode,让页面像终 端一样可交互。


    当然你也可以自定义一个方法,例如

    (defun my-c-compile&run ()
      (interactive)
      (compile (concat "gcc -Wall -o "
                       (file-name-sans-extension (buffer-name))
                       " " (buffer-name) " && ./"
                       (file-name-sans-extension (buffer-name)))
               t)
      (switch-to-buffer-other-window "*compilation*"))
    
    ;; 将 `my-c-compile&run' 全局绑定到 f5 键。
    (keymap-global-set "<f5>" #'my-c-compile&run)
    

    这样当你 buffer 在 tmp.c 文件的时候,按下 F5 就会自动编 译运行了。

  2. org-mode

    或者新建一个 org 文件,可以把这视为文学性编程吧,如果是初次接触 Emacs 用上面那种方法就好,日后感兴趣了可以看看这种方法。

    #+begin_src C :includes <stdio.h> :results output :exports both
      int main() {
        printf("hello, world");
      }
    #+end_src
    

    对于这样的一个模块,按下 C-c C-c 就能看到它的输出结果了。


用第三方包的话,我之前了解过有 smart-compile 一类的,但没具体使用过, 你可以参照下我之前的这个贴子。

1 个赞
  • WSL2 选哪个发行版比较好?
  • 是自选安装的磁盘么,还是只能安在 C 盘上,还是会分一个分区给 Linux 用?

P.S. 没用过 WSL 想了解一下。

发行版看你习惯了,官方支持的 Ubuntu 等是可以直接在 Windows 商店安装的。 不过用 Ubuntu 的话,自带的 Emacs 版本比较老,想用新版 Emacs 要自己编译了。

我之前参考这个文章编译过,不过这个文章也有点老了。

建议你看看 Windows WSL的官方文档吧。

Ubuntu 通过 Windows 商店安装的话,没法改变安装位置。
Arch Linux 的 WSL 是可以安装到其他盘的,但没有官方版本,有非官方的, 链接我忘记了,你可以查下。

WSL2 其实就是虚拟机,会在硬盘上生成一个文件的,不用单独给它分一个盘的。

迁移到其他盘:

wsl --export Ubuntu-22.04 D:\Ubuntu_WSL\Ubuntu.tar
wsl --unregister Ubuntu-22.04
wsl --import Ubuntu-22.04 D:\Ubuntu_WSL D:\Ubuntu_WSL\Ubuntu.tar
1 个赞

WSL2 ubuntu中使用emacs(已开启 --with-pgtk),快捷键 M-SPC 不生效是怎么回事?

发现问题了,好像在ubuntu里面Alt-SPC是系统保留的快捷键