日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MSYS2 Zsh

發布時間:2024/1/1 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MSYS2 Zsh 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文翻譯自 Zsh on Windows via MSYS2,作者是 Borek Bernard。

我有相當長的歷史試圖讓 “Linux-y” 環境在 Windows 上工作,從增強的 cmd.exe 到 WSL 到 Git Bash。我仍然認為 Git Bash 對大多數人來說是最好的中間地帶:超級容易安裝(Git for Windows),很少有問題,你可以在 Linux / macOS 機器上做幾乎任何你想做的事情,例如,rm -rf node_modules,單引號,Bash 腳本等。唯一的限制是 Git Bash 附帶了一組固定的實用工具——可以理解為該項目只維護與 Git 直接相關的工具。所以當你在尋找 rsync 時,你只能靠自己。zsh 也是如此,基本上其他所有東西也是如此。
我最近開始使用 Mac,zsh 尤其成為了優先考慮的對象,我重新考慮了 Windows 上的工具鏈。最后,我切換到 MSYS2,在其中安裝了 Git for Windows,它也為我解鎖了許多其他的軟件包。這是我迄今為止發現的最好的設置,所以我想分享它。

關于 WSL 的說明:我在理論上喜歡它,并且認為它可能會使 Windows 在未來成為最好的開發平臺(真正的 Linux 實用程序,本機 Docker 等),但在實踐中使用它對我來說相當麻煩,因為一個人只是在一個不同的操作系統中。例如,從 Windows 訪問安裝在 WSL 中的工具不是那么容易,用戶不同,在機器之間同步系統設置的工作方式不同,更新是獨立的,等等。使用 MSYS2 ,只有一個操作系統:Windows。

MSYS2

Git for Windows 是基于 MSYS2 構建的,而整個設置的關鍵是:從 MSYS2 開始,在其中安裝 Git for Windows。這將允許我們繼續超越它的邊界,使用 rsync 或 make 這樣的工具。
MSYS2 這個項目在他們的 wiki 上有一個很好的介紹:

  • MSYS2 由三個相對獨立的子系統組成:MSYS2、mingw32 和 mingw64。
  • msys2 是一個模擬層——完全兼容 POSIX,但速度很慢。
  • mingw 子系統提供了原生的 Windows 二進制文件,在編譯時將 Linux 調用重寫為它們的 Windows 對等文件。例如,Git for Windows 是一個 mingw64 二進制文件(不像 msys Git 利用了兼容層,因此很慢)。
  • 每個子系統都有自己的 Shell,選擇正確的 Shell 很重要。msys shell有一個以 /usr/local/bin:/usr/bin:/bin:… 開始的 PATH,而 mingw64 shell 在它前面添加了 /mingw64/bin。這意味著 /mingw64/bin/git.exe 只在 mingw64 shell 中可用。
  • MSYS2 自帶 Pacman,一個從 Arch Linux 移植過來的包管理器,還有許多可以通過 pacman -S <package> 安裝的包。

從 https://www.msys2.org/ 下載 64 位 MSYS2 并安裝。運行:

pacman -Syu # repeat if necessary pacman -Su

當詢問時,完全關閉終端,并通過開始菜單快捷方式 “MSYS2 MSYS” 重新啟動它。
現在已經安裝和更新了基本環境。關閉終端。

#HOME

默認情況下,$HOME 是 /home/You (C:\msys64\home\You)。讓我們將其切換到 C:\Users\You 以使你的 .gitconfig 能夠工作。
最好的辦法是添加 Windows 環境變量 HOME = C:\Users\You。我還嘗試了其他方法,比如更新 C:\msys64\etc\profile 或 C:\msys64\etc\bash.bashrc,但這不通用。
更新:對于 openssh 以及其他很多程序,修改 C:\msys64\etc\nsswitch.conf 中的 db_home 行為:

db_home: windows cygwin desc

ConEmu MinGW Shell

讓我們切換到一個更好的終端:ConEmu。
這里我將推薦一件有爭議的事情:從現在開始只使用 mingw64 shell。這與官方 wiki 相反,他們建議在 msys shell 中運行 Pacman,但是:

  • 我沒有遇到從 mingw shell 安裝包的任何問題。
  • 我在 msys shell 中安裝 mingw-w64-x86_64-git-lfs 時遇到了問題,因為它使用 git 作為安裝的一部分,而 git 并不在 msys 的 PATH 中。
  • 擔心兩個 Shell,兩個 ConEmu 任務,兩個 PATH 配置等等是不值得的。

所以在本節中,我們將只設置一個 ConEmu 為 mingw64。如果你需要 msys shell,請使用 Windows 開始菜單中的 “MSYS2 msys” 快捷方式。
我的 MSYS2::mingw ConEmu 任務如下:

set CHERE_INVOKING=1 & set MSYSTEM=MINGW64 & set MSYS2_PATH_TYPE=inherit & set “PATH=%ConEmuDrive%\msys64\mingw64\bin;%ConEmuDrive%\msys64\usr\bin;%PATH%” & %ConEmuBaseDirShort%\conemu-msys2–64.exe -new_console:p %ConEmuDrive%\msys64\usr\bin\bash.exe — login -i -new_console:C:”%ConEmuDrive%\msys64\msys2.ico”

它是默認的 {Bash::Msys2-64} 任務的副本,設置了 MSYSTEM 變量(使其成為一個mingw shell),并擴展了 PATH 以包含完整的 Windows 路徑,這樣就可以訪問系統范圍的二進制文件,如 node、yarn 或 kubectl。如果你需要確認你在運行哪個 Shell,可以執行 echo $MSYSTEM。

必不可少的工具

pacman -S man vim nano pacman -S openssh rsync make pacman -S zip unzip pacman -S mingw64/mingw-w64-x86_64-jq

關于 sudo 的說明:MSYS2 不提供。參考這個問題或 imachug/win-sudo。

Git for Windows

如果你之前安裝了 Git for Windows,卸載它或者從 PATH 直接刪除 C:\Program Files\Git\...。

現在讓我們把 GfW 安裝到 MSYS2。大多數說明都來自這個 wiki 頁面,但我必須對它進行一些定制。

首先,編輯 C:\msys64\etc\pacman.conf 并添加以下內容:

[git-for-windows] Server = https://wingit.blob.core.windows.net/x86-64

它需要放在 [mingw32] 作為第一個倉庫,這樣它包含的包將會被首先安裝。對簽名密鑰進行授權:

curl -L https://raw.githubusercontent.com/git-for-windows/build-extra/master/git-for-windows-keyring/git-for-windows.gpg | pacman-key --add - && pacman-key --lsign-key 1A9F3986

在原位用新的倉庫更新安裝:

pacman -Syu

這將指導你安裝一個新的 msys2 運行時。你必須完全退出終端,并像以前一樣再次運行更新命令。重復 pacman -Syu,直到沒有更多的東西要更新。
現在安裝 Git for Windows:

這里用的是 pacboy。它是一個小的包裝器,可以節省一些輸入,例如, pacboy sync git:x 等價于 pacman -S mingw-w64-x86_64-git(“:x”表示我們想要x64版本)。

pacboy sync git:x git-credential-manager:x git-lfs:x git-doc-html:x git-doc-man:x

檢查所有東西工作正常:

git --version git config --list --show-origin # ... verifies that your ~/.gitconfig is read

你應該能夠從 GitHub pull,證書助手應該存儲你的 HTTPS 密碼。

更新 Windows PATH

為了使 Git 和其他工具如 cp 或 rm -rf 也可以在 cmd.exe 和其他 shell 中使用,按以下順序添加到你的 PATH(我建議首先加載系統路徑):

C:\msys64\mingw64\bin C:\msys64\usr\bin

檢查:

Microsoft Windows [Version 10.0.17134.112]
? 2018 Microsoft Corporation. All rights reserved.
C:\Users\Borek>git --version
git version 2.18.0.windows.1
C:\Users\Borek>ls -la

Zsh

pacman -S zsh

ConEmu 任務和我們之前創建的差不多,只是將 bash.exe 換成 zsh.exe。這是我的 {MSYS2:zsh} 任務:

set CHERE_INVOKING=1 & set MSYSTEM=MINGW64 & set MSYS2_PATH_TYPE=inherit & set “PATH=%ConEmuDrive%\msys64\mingw64\bin;%ConEmuDrive%\msys64\usr\bin;%PATH%” & %ConEmuBaseDirShort%\conemu-msys2–64.exe -new_console:p %ConEmuDrive%\msys64\usr\bin\zsh.exe — login -i -new_console:C:”%ConEmuDrive%\msys64\msys2.ico”

這篇文章提供了一個基于 mintty 的 ConEmu 任務示例,但我認為 conEmu -msys2-64.exe 是首選的方式,請參閱這里。

Oh My Zsh

雖然我覺得 omz 有點臃腫(例如,它的 git 插件注冊了大約 100 萬個別名),所以我喜歡啟用 omz 來獲取它的 lib文件夾 中所有有用的東西,但不啟用任何插件或主題。我喜歡通過 Antigen 安裝 omz 和其他東西。首先,將以下內容加入 .zshrc:

實際上,我的 ~/.zshrc 只是 source 了 $HOME/GDrive/Settings/zsh/.zshrc,這樣它就能在電腦間同步了。我可能很快就會改用版本化的 dotfiles 方法。

# Use the path where you installed Antigen source "${funcsourcetrace[1]%/*}/antigen.zsh" # Load Oh My Zsh antigen use oh-my-zsh # Example of how to add other useful things antigen bundle zsh-users/zsh-completions antigen apply

對于我而言 .zshrc 中其他重要的東西包括:

# Make /c/... autocompletion work, see Alexpux/MSYS2-packages#38 zstyle ':completion:*' fake-files /: '/:c' # Convenient path navigation, e.g., `cd vp` setopt CDABLE_VARS vp="/c/Dev/VersionPress/versionpress" temp="/c/Dev/temp" # VSCode as an editor if [[ -n $SSH_CONNECTION ]]; thenexport EDITOR='vim' elseexport EDITOR='code-insiders --wait' fi

提示符

有無數的 zsh 提示符,但正如預期的那樣,沒有一個是非常完美的。我想從提示符中得到幾個關鍵信息:

  • 它應該是簡單的,就像 Pure。
  • 它必須是異步的,以便查詢 Git 信息不會阻礙實際的工作。*
    • 譯者注:這一點的確很重要。

    第二點在Windows上實現相對比較困難,因為大多數異步提示符(包括 Pure)依賴于 zsh-async,它依賴于 zsh/zpty,這在 MSYS2 中不起作用(直到一些回退被實現,見 mafredri/zsh-async#26)。我發現在 Windows 上工作的唯一異步提示符是 agkozak/agkozak-zsh-theme。我不喜歡它的一些細節,例如 Git 信息在右側提示符中,所以我有自己的一個 fork。在我的 .zshrc 中:

    antigen theme borekb/agkozak-zsh-theme@prompt-customization

    效果長這樣:

    我們現在有了一個完整的工作環境,包括MSYS2、zsh、Oh My zsh、Git for Windows 和 Pacman,其中添加新包就像 pacman -S <something> 一樣簡單。這是我迄今為止發現的最好的設置,如果你有任何建議,請在下面的評論中告訴我。

    非常感謝所有參與 MSYS2 和 Git for Windows 項目的人,你們讓 Windows 開發人員的生活變得可以忍受!

    總結

    以上是生活随笔為你收集整理的MSYS2 Zsh的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。