如何快速更改外壳程序文件夹以匹配当前打开的文件

maj*_*tor 2 powershell visual-studio-code

在vscode中打开单个文件时,当我打开集成的Powershell时,它总是在我的$HOME文件夹中启动。

有什么方法可以快速切换到当前显示的文件的目录,而无需手动cd进入该目录?

有点像cd $vsCurrentFileDirectory

当前,我右键单击选项卡,然后复制路径cd (Split-Path <CTRL-v>)

Mar*_*ark 5

编辑v1.39中将添加一个新命令,以使其更直接,请参见发行说明。给出的示例绑定是:

{
    "key": "cmd+shift+h",
    "command": "workbench.action.terminal.newWithCwd",
    "args": {
        "cwd": "${fileDirname}"
    }
}
Run Code Online (Sandbox Code Playgroud)

在Insider的构建中确实起作用。但是,这将创建一个新终端,而不修改现有终端。


[ 原始答案 ]:这将更改当前端子

您可以设置一个快捷键来轻松完成此操作:

{
  "key": "alt+t",
  "command": "workbench.action.terminal.sendSequence",
  "args": {"text": "cd '${fileDirname}'\u000D"}
},
Run Code Online (Sandbox Code Playgroud)

\u000D是回归这样的命令立即触发。

另请注意,'${fileDirname}'如果您的目录名称中包含空格,我会用引号引起来。

无论焦点位于终端还是文件中,键绑定都将起作用。


另请参阅在Powershell和cmd中更改目录的快捷方式,以获取其他信息,以防您在Powershell中更改驱动器号和转义双引号。

{
    "key": "ctrl+alt+d",
    "command": "workbench.action.terminal.sendSequence",
    "args": {"text": "cd \"${fileDirname}\"\u000D"}
}
Run Code Online (Sandbox Code Playgroud)

/d国旗的讨论。感谢@skataben提供其他信息。


或者,可以执行以下扩展操作: terminal-here,但是键绑定实际上可以更快地工作。将sendSequence被创建的扩展名,当与变量置换功能不可用。

最后,如果右键单击资源管理器中的文件夹,则那里有一个Open in Terminal选项(以及相应的命令)。这意味着您可以像这样在键绑定中使用该命令:

{
  "key": "alt+t",
  "command": "openInTerminal"
}
Run Code Online (Sandbox Code Playgroud)

但是我的第一个sendSequence按键绑定仍然是最快的方法。

  • 这里只有键绑定是正确的,因为其他选项都创建新终端,而不是更改现有终端中的文件夹。 (2认同)
  • 在 keybindings.json 中。从左下角的齿轮图标打开键盘快捷键。然后单击左上角的图标(就在拆分编辑器图标的左侧),打开 keybindings.json。 (2认同)
  • @sairfan它们都是键绑定,所以keybindings.json。`命令面板/首选项:打开键盘快捷键 (JSON)` (2认同)

Dar*_*ans 5

我的解决方案是简单地将以下内容添加到 VS Code 设置中,以便无论您设置什么键来打开新的集成终端,它都能确保终端转到当前打开文件的目录。无论您选择什么终端,无论是 powershell、CMD、Git Bash 等,这都有效:

"terminal.integrated.cwd": "${fileDirname}"
Run Code Online (Sandbox Code Playgroud)