
問題: 可以打電話嗎Git-Bash發出命令世界SL?詳細的上下文位於兩個分隔線之間。 (這個問題末尾附加了簡單的解決方案.)
我使用別名來編譯我的所有*.tex
文檔,使用Git-Bash在 Windows 10 上c:/users/UserName/.bashrc
。
alias lmk='latexmk -pvc -pdf --synctex=1 -src-specials -silent -time -interaction=nonstopmode'
擁有本地Gvim.exe
編輯器和Git-Bash託管指令的實例latexmk
,我不再需要費心繁瑣的編譯過程。
但是,當我latexmk
透過 WSL 發出相同的命令時,我無法再執行向前搜尋和向後搜尋。編譯器的某些選項將寫入 PDF(或其語法檔案),將 PDF 上的所有行對應到 WSL 風格路徑中詳細說明的來源檔案中的行。解決這些問題的另一種方法是:要么選擇完全進入WSL 世界,我使用本機編輯器+ PDF 檢視器(這對我來說是全新的),要么進一步調試編譯器,看看是否可以交換所有內容將 WSL 風格的路徑轉換為 Windows 風格的路徑(這又很耗時)。
一個簡單的解決方案是以某種方式從 WSL 呼叫 Git-Bash,從而將lmk
命令作為命令列參數傳遞給 Git-Bash?
除了細節之外,總體來說,Git-Bash我可以直接從 WSL 呼叫一些可執行檔嗎?如果是這樣,如何告訴我想運行以下“東西”的 WSL?在我的機器上,我可以找到Git-Bash作為:"C:\Program Files\Git\git-bash.exe"
。我嘗試轉到/mnt/c/Program\ Files/Git/git-bash.exe
WSL,它只打開了一個獨立的 Git Bash 視窗。
使用 zsh + GitBash 的單行解決方案
我使用WSL 作為預設 shell,以下是我定義的可從 WSL 命令列直接呼叫的zsh
函數:lmk TexFilename.tex
function lmk(){
"$(wslpath "C:\Program Files\Git\git-bash.exe")" --hide -c "lmk $1"
}
# Note, the `lmk` here is actually alias from Git-Bash, as defined in: c:/users/UserName/.
下面的行使終止隱藏bash
/perl
進程變得很方便:發出lmk_kill
應該完全執行的編譯器(透過latexmk
Perl 腳本)。
alias lmk_kill="powershell.exe kill -n perl"
總結一下:使用新zsh
函數,我可以*.tex
從 WSL 編譯文件,就像在 Windows 上使用本機 MikTeX 編譯器一樣。這非常適合我目前的 GVIM + Sumatra 設置,其中向前和向後搜尋都功能齊全。
更簡單的解決方案:latexmk
透過 PowerShell託管
詳情請參閱這個答案以下。
alias lmk='powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode'
並且,main.tex
使用簡單的命令在任何地方編譯文件,例如在 WSL 上的 Tmux 會話窗格中lmk main.tex
。
答案1
首先,舉一些例子。設一個簡單的命令為touch test.txt
。
- 在 Windows 風格中:
"C:\Program Files\Git\git-bash.exe" --hide -c "touch test.txt"
- 在 WSL 風格:
wsl.exe -- "$(wslpath "C:\Program Files\Git\git-bash.exe")" --hide -c "touch test.txt"
那麼,這是如何運作的呢?--
之後的選項按wsl.exe
原樣傳遞剩餘的命令行。然後wslpath
將Windows風格(反斜線)路徑轉換為WSL/Unix風格(正斜線),即C:\
變成/mnt/c
(預設)。其餘的都是選項git-bash.exe
。這裡是其中一些。如需進一步閱讀,請參閱WSL 與 Windows 的互通性。
答案2
Git-bash
根本沒有必要執著。原始貼文中的基本要求是*.tex
在 Windows 電腦上使用本機 MikTeX編譯文件。任何有權PATH
存取可執行檔的命令 shelllatexmk
都可以完成工作。
問題是Git-bash
:git-bash.exe
視窗總是在新視窗中的自己的模擬器中啟動,從而無法與 Tmux 一起使用。我現在認為沒有必要使用 Git-Bash 進行生產。再見了,我的一個老朋友:)。儘管如此,git
從其運行安裝程序下載頁面仍然是我自訂 Windows 機器時要做的第一件事。它提供了Windows 上git.exe
所需的功能。gvim.exe
*.tex
使用 Native MikTeX編譯檔案的實用方法( latexmk
)
Windows 上還有其他可用的命令 shell,並且所有命令均可用於 WSL。例如:powershell.exe
應在託管 WSL 會話的相同模擬器中開啟 PowerShell,從而可以「latexmk
在 WSL 中託管編譯過程」。這打開了透過 Tmux 託管多個「後台編譯器」的大門。
latexmk
使用本機 Windows 10 安裝從 MikTeX呼叫的一行命令:
powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode
用法:將長行命令指派給 WSL 中使用的 shell 的別名,例如:
alias lmk='powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode'
然後,從本機目錄中main.tex
發出命令lmk main.tex
以連續模式編譯 LaTeX 文件。命令後面的標誌集latexmk
也將啟用向後/向前搜尋。