wangz's blog / Tags

Windows Environment

windows-environment-22-11-09_20.26.57.png

1. Emacs 相关配置   Emacs

1.1. 使用 Msys2 安装依赖

$ pacman -S --needed base-devel \
  mingw-w64-x86_64-toolchain \
  mingw-w64-x86_64-xpm-nox \
  mingw-w64-x86_64-libtiff \
  mingw-w64-x86_64-giflib \
  mingw-w64-x86_64-libpng \
  mingw-w64-x86_64-libjpeg-turbo \
  mingw-w64-x86_64-librsvg \
  mingw-w64-x86_64-lcms2 \
  mingw-w64-x86_64-jansson \
  mingw-w64-x86_64-libxml2 \
  mingw-w64-x86_64-gnutls \
  mingw-w64-x86_64-zlib \
  mingw-w64-x86_64-harfbuzz

1.2. 编译 Emacs 并安装

笔者写了个脚本,用来编译 Emacs 并安装

#!/usr/bin/env bash

set -e

SCRIPT_PATH="$0"
DIR_PATH="${SCRIPT_PATH%/*}"
EMACS_SRC_DIR="/e/repos/emacs"

cd "$EMACS_SRC_DIR"

./autogen.sh
./configure \
    --without-pop \
    --with-native-compilation \
    --enable-link-time-optimization \
    --with-dbus \
    --with-sound=no

make NATIVE_FULL_AOT=1 -j$(nproc)
make install

# 我统一在一个目录中管理我的所有配置文件,但是 Windows 缺乏对应软链接工具,所以在初始化 Emacs 配置之前,我需要指定真正的配置文件位置
cat <<EOF > "C:/msys64/mingw64/share/emacs/site-lisp/site-start.el"
(setenv "HOME" (concat "C:/msys64/home/" (getenv "USER")))
(setq user-init-file "$DIR_PATH/init.el")
(load user-init-file)
EOF

1.3. 其他设置

1.3.1. 创建快捷方式

  1. 任务栏固定 emacs.exe
  2. 修改属性 (alt + shift + right click),将其中的地址修改为

    C:\msys64\mingw64\bin\emacsclientw.exe -n -c -a ""
    

1.3.2. 禁用 Ctrl-Space

Ctrl-Space 在 Windows 中默认用来切换输入法,但是笔者更习惯使用它来切换选择标记。网上提供了很多方法来对其进行切换,包括使用 AutoHotKey 等软件,但是 Windows 10 中提供设置禁用切换输入法这个功能。

具体方法为:

  1. 在托盘区域的输入法上右键单击。
  2. 进入 设置
  3. 进入 按键 设置
  4. 模式切换 中反选 Ctrl+Space

此时 Windows 就不会拦截该快捷键,可以用于 Emacs 编辑相关的键位绑定中。

1.3.3. 绑定 s-x 启动 Emacs

使用 autoHotKey

LWin & x::
emacsclient --no-wait -a "" -e "(if (frame-focus-state) (lower-frame) (raise-frame))"
Return

2. WezTerm 相关配置   Wezterm

local wezterm = require 'wezterm'

return {
   default_prog = { 'C:\\msys64\\usr\\bin\\zsh.exe', '-l' },
   font = wezterm.font 'JetBrains Mono',
   color_scheme = 'zenbones',
   set_environment_variables = {
      CHERE_INVOKING = 'enabled_from_arguments',
      HOME = 'E:\\Litter',
      WENV = 'D:\\wenv'
   }
}
Powered by Org-mode and a fork of org-static-blog