我无法弄清楚如何将WSL与VS Code集成。我可以使用以下方式打开集成终端
"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\bash.exe"
集成终端工作。但是,我不能使用源代码控制或VS Code的任何linting功能。在源控制菜单中,它显示“没有活动的源控制提供程序。”。
问题可能是由git的路径引起的,但我无法弄清楚如何解决问题。我将不胜感激任何帮助。谢谢。
答案 0 :(得分:3)
根据this article,您必须编写批处理文件
@echo off
bash.exe -c "git %*"
告诉VsCode git插件定位这个bat文件。 (终端设置为像你一样使用bash)
你可以为所有你的短信/嗅探器/助手插件做到这一点。
希望这可以帮助...并且工作; - )
答案 1 :(得分:1)
这些选项都不适合我,所以我建立了自己的!
您可以在这里找到我的完整解决方案:https://gist.github.com/onecrayon/de756538d5331f7592065507c03b1864
简而言之:您需要通过批处理文件进行代理(如pitrackster所建议),但是与VSC一起使用时,其批处理文件将失败,因为它无法正确地逃避代理命令并且无法转换路径往返Windows和Unix。
为了后代,这是我在发帖时上面链接的脚本,没有自述文件:
git.bat
@echo off
:: %~dp0 is the directory of this batch file
set proxy_path=%~dp0_proxy_cmd.bat
:: %* is the full command passed to this batch file
%proxy_path% git %*
_proxy_cmd.bat
@echo off
:: Properly escape the command
:: Many thanks to wsl-alias for this logic: https://github.com/leongrdic/wsl-alias
set cmd=%*
set cmd=%cmd:\"=\\"%
set cmd=%cmd:\'=\\'%
set cmd=%cmd:\=/%
set cmd=%cmd://=\\%
set cmd=%cmd:"=\"%
set cmd=%cmd:'=\'%
set cmd=%cmd:(=\(%
set cmd=%cmd:)=\)%
:: Grab the path to our proxy Bash script (%~dp0 is the directory of this batch file)
set bash_proxy=%~dp0_proxy_cmd.sh
set bash_proxy=%bash_proxy:\=\\%
:: Pass things off to the Bash script
bash.exe -c "$(wslpath %bash_proxy%) %cmd%"
_proxy_cmd.sh
##
# Evaluates command, parsing paths at both ends (Windows => Unix => Windows)
#
# Benefits to doing this instead of directly invoking the command in the batch file:
#
# + Easier to convert path arguments to Unix paths
# + sed regex does not require double escaping backslashes (not embedded in double quotes)
##
cmd=()
for arg in "$@"
do
if [[ $arg =~ ^[a-zA-Z]:/ ]]; then
cmd+=( $(wslpath "$arg") )
else
cmd+=("$arg")
fi
done
# TODO: Look into ways to convert inline paths via `wslpath` instead of hard-coding `/mnt` search
# Kind of a tricky issue, because our output could be basically anything
eval "${cmd[@]}" | sed \
-e 's|"/mnt/\([a-zA-Z]\)/\([^"]*\)"|"\1:/\2"|g' \
-e "s|'/mnt/\\([a-zA-Z]\\)/\\([^']*\\)'|'\\1:/\\2'|g" \
-e 's|/mnt/\([A-Za-z]\)/\([^ ]*\)|\1:/\2|g' \
-e 's|/|\\|g'
答案 2 :(得分:0)
你需要在主机操作系统(Windows)上安装Git,因为VS Code从cmd调用git,而不是集成终端。
此问题的解决方案是为Windows安装git。 GitHub Desktop是一个很好的选择。