首頁>技術>

在window10上執行emacs-27.1會因為路徑問題而導致有些命令不能正常應用,比如find。

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

無論用find還是用find.exe全部呼叫的是windows的命令,如果直接在emacs中用grep-find命令會報錯:

迂迴的解決方案是安裝busybox,用grep-find的時候加字首:

然而反覆輸入busybox著實影響效率。

有沒有更優的解決方案呢?

Emacs的路徑Path

我們可以用getenv函式參與emas的路徑:

ELISP> (getenv "PATH")

"C:\\\\ProgramData\\\\scoop\\\\shims;C:\\\\Windows\\\\system32;C:\\\\Windows;C:\\\\Windows\\\\System32\\\\Wbem;C:\\\\Windows\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\;C:\\\\Windows\\\\System32\\\\OpenSSH\\\\;C:\\\\ProgramData\\\\chocolatey\\\\bin;C:\\\\Users\\\\gaowei\\\\scoop\\\\shims;C:\\\\Users\\\\gaowei\\\\AppData\\\\Local\\\\Microsoft\\\\WindowsApps"

注意其中的反斜槓,真讓人頭疼。

我們同時會注意到,emacs中有71中與path相關的變數。

修改PATH路徑

我們呼叫函式setenv修改環境變數PATH。

(setenv VARIABLE &optional VALUE SUBSTITUTE-ENV-VARS)

我們在上文中苦惱於冗餘的反斜槓,emacs提供了便捷的解決方案,直接用/替代\\。因此最總的路徑,我們可以修改為:

"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)

由於我們的配置要適配於多種系統,因此要加上選擇語句:

(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)

其中變數”system-type"記錄了當前作業系統種類。

ELISP> (eval 'system-type)windows-ntELISP> (eval 'system-type)windows-nt

此時,grep-find就能無礙執行。

以上,變數修改完成,我的機器資訊為:

gaowei@alpha ------------ OS: Windows 10 專業版 x86_64 Host: TIMI RedmiBook 16 Kernel: 10.0.19041 Uptime: 7 hours, 57 mins Packages: 27 (scoop) Shell: bash 4.4.23 Resolution: 1920x1080 DE: Aero Terminal: Windows Terminal CPU: AMD Ryzen 5 4500U with Radeon Graphics (6) @ 2.370GHz GPU: Caption GPU: AMD Radeon(TM) Graphics GPU Memory: 8640MiB / 15741MiB 

Emacs相關問題,期待留言交流。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • AS自定義模板,效率提升的不是一星半點