VS Code集成终端无法解析变量。

3
关于VS Code中的此设置:

enter image description here

有没有办法我可以使用${fileDirname}来打开当前文件的路径(如果可用),如果不可用,则默认在用户主目录下打开?我刚从Windows切换到Ubuntu,这个设置在VSCode集成终端中的行为一直困扰着我;如果我没有打开任何文件,我就无法打开终端,因为它会显示这个错误:

enter image description here

没有这个设置,它每次都会提示我“选择新终端的当前工作目录”,这也不是我想要的。理想情况下,如果可用的话,它应该在${fileDirname}打开,否则默认行为是在用户主目录打开,而不是抛出错误或提示我选择文件夹。
2个回答

0
尝试使用${relativeFileDirname},因为终端已经将基本路径设置为${cwd}。这对我来说是有效的,按照你所描述的,它会打开到当前文件目录,否则默认为当前工作目录。

enter image description here

如果VSCode找不到relativeFileDirname,那就意味着还有另一个问题需要解决。

0
在VS Code中,${fileDirname}变量用于引用当前在编辑器中打开的文件的目录。如果您没有打开文件,VS Code无法解析此变量,这会导致您看到的错误。
为了实现您想要的行为,即如果可用,则终端在当前文件的目录中打开,否则默认在用户的主目录中打开,您可以在集成终端的settings.json文件中使用条件设置。VS Code在settings.json文件中不原生支持条件逻辑,但您可以通过一个shell脚本来解决这个限制,该脚本检查当前目录是否设置,如果没有设置,则回退到主目录。
  1. 在您的主目录中创建一个shell脚本(例如open_terminal.sh),内容如下:

    #!/bin/bash
    if [ -d "$1" ]; then
      cd "$1"
    else
      cd "$HOME"
    fi
    exec gnome-terminal
    
  2. 为您的脚本赋予可执行权限:

    chmod +x ~/open_terminal.sh
    
  3. 更新您的VS Code设置(settings.json)以使用此脚本:

    {
      "terminal.integrated.shell.linux": "/bin/bash",
      "terminal.integrated.shellArgs.linux": ["-c", "~/open_terminal.sh ${fileDirname}"]
    }
    
这个设置的作用是每次打开一个新的终端时,它都会执行open_terminal.sh脚本。该脚本会检查${fileDirname}是否是一个目录;如果是,它会切换到该目录。如果不是,它会默认切换到用户的主目录。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接