簡體   English   中英

如何從 VSCode 中的集成終端打開文件到新選項卡

[英]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中列出的目錄之一中

  • 在 Windows 上,它指代用作 CLI 入口點的code.cmd批處理文件。
  • 在類 Unix 平台上,它指的是code Bash 腳本。

它的默認行為在最近激活的 Visual Studio Code 窗口中將給定文件作為新選項卡打開(當從 Visual Studio Code內部運行時,根據定義,它是當前窗口)。

如果您沒有發生這種情況,則code可能是指您機器上的不同可執行文件:

  • 為避免歧義,請改用完整的 CLI 路徑,但是,這需要您知道 Visual Studio Code 的安裝位置; 典型的 CLI 位置是:

    • Windows: $env:LOCALAPPDATA\Programs\Microsoft VS Code\bin\code.cmd
    • macOS: /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'
}

我無法重現或解釋為什么這可能會在您的系統上發生。 無論是在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM