[英]How to run a script in a new Integrated Terminal window from an Integrated Terminal window
[英]How to open a file from the integrated terminal in VSCode to a new tab
如果我的腳本在 vscode 中運行,它希望它在 vscode 的新選項卡中打開一個 .txt 文件。 否則,打開包含該文件的文件夾。 但是,當前的“代碼”命令會在終端窗口而不是新的編輯選項卡中打開它。
if ($env:TERM_PROGRAM -eq 'vscode') {
code 'C:\temp\_Release_Evidence\test.txt'
}
else {
explorer 'C:\temp\_Release_Evidence'
}
通常, code
是指 Visual Studio Code 的 CLI,假定它位於$env:PATH
中列出的目錄之一中:
code.cmd
批處理文件。code
Bash 腳本。它的默認行為是在最近激活的 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
/usr/bin/code
在 Windows 上,像在調用中包含文件擴展名這樣簡單的事情 - 即code.cmd
- 可能會有所幫助。
但是,假設您使用的是 PIC(PowerShell 集成控制台) ,這是一個專門的 PowerShell shell,它帶有 Visual Studio Code 的PowerShell 擴展,這是一種性能更好的解決方法,因為它不需要啟動子進程:
PIC 帶有psedit
命令( Open-EditorFile
函數的別名),它可以在當前 Visual Studio Code 窗口的選項卡中快速打開一個或多個文件。
因此,您可以使用以下內容:
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'
}
我無法重現或解釋為什么這可能會在您的系統上發生。 無論是在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
來關閉輸入流。
即使這不是適合您的解決方法,但在其他情況下它也是一個方便的提示。 例如,以下命令將在 VSCode 中打開Get-Process
文檔:
提醒:一旦內容完成填充,不要忘記在終端中
Ctrl+C
以便能夠運行其他命令,或關閉臨時文件緩沖區。
Get-Help Get-Process -Detailed | code -
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.