如果我的腳本在 vscode 中運行,它希望它在 vscode 的新選項卡中打開一個 .txt 檔案。否則,打開包含該檔案的檔案夾。但是,當前的“代碼”命令會在終端視窗而不是新的編輯選項卡中打開它。
if ($env:TERM_PROGRAM -eq 'vscode') {
code 'C:\temp\_Release_Evidence\test.txt'
}
else {
explorer 'C:\temp\_Release_Evidence'
}
uj5u.com熱心網友回復:
通常,code指的是 Visual Studio Code 的 CLI,假定它位于以下目錄之一中$env:PATH:
- 在 Windows 上,它指的
code.cmd是用作 CLI 入口點的批處理檔案。 - 在類 Unix 平臺上,它指的是
codeBash 腳本。
它的默認行為是在最近激活的 Visual Studio Code 視窗中將給定檔案作為新選項卡打開(當從Visual Studio Code內部運行時,根據定義,它是當前視窗)。
如果您沒有發生這種情況,則可能code是指您機器上的不同可執行檔案:
為避免歧義,請改用完整的 CLI 路徑,但是,這需要您知道 Visual Studio Code 的安裝位置;典型的 CLI 位置是:
- 視窗:
$env:LOCALAPPDATA\Programs\Microsoft VS Code\bin\code.cmd - 蘋果系統:
/usr/local/bin/code - Linux:
/usr/bin/code
- 視窗:
在 Windows 上,像在呼叫中包含檔案擴展名這樣簡單的事情 - 即
code.cmd- 可能會有所幫助。
但是,假設您使用的是 PIC(PowerShell 集成控制臺),這是一個專門的 PowerShell shell,它附帶Visual Studio Code的PowerShell 擴展,這是一種性能更好的解決方法,因為它不需要啟動子行程:
PIC 帶有
psedit命令(Open-EditorFile函式的別名),它可以在當前 Visual Studio Code 視窗的選項卡中快速打開一個或多個檔案。- 警告:從 PIC 的 v2022.5.1 版本開始,指定多個檔案只有在單獨列舉時才有意義,作為文字路徑。如果您嘗試使用通配符模式或目錄路徑,則目錄中的所有匹配檔案/檔案都將在單個選項卡中按順序無用地打開。
因此,您可以使用以下內容:
if ($env:TERM_PROGRAM -eq 'vscode') {
# Use `psedit`, if available; `code` otherwise.
$exe = if ((Get-Command -ErrorAction Ignore psedit)) { 'psedit' } else { 'code' }
& $exe 'C:\temp\_Release_Evidence\test.txt'
}
else {
explorer 'C:\temp\_Release_Evidence'
}
uj5u.com熱心網友回復:
我無法重現或解釋為什么這可能會在您的系統上發生。無論是在PowerShell 集成終端(@mklement0簡潔地解釋)還是在 VS Code 的終端窗格中的標準 PowerShell 終端中運行以下命令,都應該在通常顯示檔案內容的新選項卡中打開檔案:
code /path/to/file.txt
一個合適的解決方法可能是獲取文本檔案的內容并將它們通過管道傳輸STDIN。我們可以通過在向其傳遞資料時添加一個連字符-作為空引數來code做到這一點:
# Tip: Use the gc alias for Get-Content
Get-Content /path/to/file.txt | code -
然后,您可以Save As...在進行更改后將檔案保存到其預期目標。Ctrl C如果您需要在關閉檔案或保存到檔案之前運行其他命令,則需要在終端中使用來關閉輸入流。
即使這不是適合您的解決方法,但在其他情況下它也是一個方便的提示。例如,以下命令將打開Get-Process內部 VSCode 的檔案:
提醒:一旦內容完成填充,不要忘記
Ctrl C在終端中點擊,以便能夠運行其他命令,或關閉臨時檔案緩沖區。
Get-Help Get-Process -Detailed | code -
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487127.html
上一篇:拆分文字路徑以獲取檔案名
