#git #visual-studio-code #windows-subsystem-for-linux
#git #visual-studio-code #windows-subsystem-for-linux
Вопрос:
У меня установлена Ubuntu для WSL, и я работаю с ней, чтобы заниматься программированием. Код Visual Studio установлен в системе Windows.
Проблема в том, что всякий раз, когда git нужно открыть файл в своем основном редакторе (Visual Studio Code в моем случае), он открывает файл в моем редакторе, но у него пустой буфер.
Я установил VS Code в качестве основного редактора, используя эту команду :
git config --global core.editor "code --wait"
Когда он открывает файл, используя git commit
, например, я получаю это :
пустой файл в VS Code
Я почти уверен, что это вызвано WSL, потому что у меня никогда не было этой проблемы до использования другой альтернативы, но я не могу понять, почему.
Ответ №1:
Это связано с тем, что ваш VS-код — это программа для Windows, и вы работаете в WSL.
Когда Git в WSL вызывает редактор для редактирования чего-то вроде сообщения о фиксации, он передает путь к файлу для редактирования. Этот путь является путем Linux. Однако ваш VS Code — это программа для Windows, и он не знает, что указанный путь должен интерпретироваться как путь Linux (WSL), и вместо этого он интерпретирует его как путь Windows.
У вас есть несколько вариантов:
- Используйте версию VS Code для Linux вместо версии для Windows. Это, вероятно, потребует настройки X-сервера.
- Используйте другой редактор в Linux.
- Измените свой редактор, чтобы использовать сценарий оболочки, который вызывает VS Code с версией пути для Windows. Это сработает, только если VS Code может обрабатывать специальные пути WSL, что могут не все программы Windows, но это будет выглядеть так:
$ git config --global core.editor
'f () { printf '''%s''' "$@" | xargs -0 -I{} wslpath -w {} | xargs -d'''n''' code --wait; };f'
Это настраивает ваш редактор на функцию оболочки, которая вызывается wslpath -w
по каждому пути, а затем предоставляет каждый из них VS Code в командной строке.
Комментарии:
1. Возможно, эти ссылки тоже помогут: WSL-VSCODE и WSL-GIT