Если вы, как и многие разработчики, предпочитаете держать клиентские проекты в изолированном окружении (например, на виртуальной машине), но при этом хотите сохранить привычный комфорт локальной разработки в VS Code, эта статья – ваш ориентир. Проблема с медленным поиском файлов или долгой индексацией после каждого переподключения к VM знакома не понаслышке.
Давайте разберёмся, как обойти эти сложности без риска запускать чужой код напрямую на своей машине.
Вариант 1: Запуск VS Code прямо на виртуальной машине
Казалось бы, очевидное решение – установить редактор на VM – часто игнорируют из-за мифа о необходимости графического интерфейса. На деле всё проще:
1. Активируйте X11-форвардинг в SSH. Для этого в файле /etc/ssh/sshd_config убедитесь, что есть строки:
X11Forwarding yes
X11UseLocalhost no
Перезапустите службу:
sudo systemctl restart sshd
2. Установите VS Code на виртуальную машину. Для Debian/Ubuntu:
sudo apt-get install code
Примечание: если пакет недоступен, скачайте .deb с официального сайта Microsoft.
3. Подключитесь к VM через SSH с флагом -X
:
ssh -X user@vm_ip
Запустите редактор командой code – окно VS Code откроется на вашем основном компьютере, но все операции выполняются внутри VM.
Плюсы метода:
- Индексация происходит на стороне виртуальной машины – при переподключении данные не сбрасываются.
- Полная интеграция с расширениями (включая отладчики и линтеры).
Кстати, если интерфейс кажется «тормознутым», проверьте настройки сжатия SSH (опция
Compression yes
вssh_config
).
Вариант 2: Замена SFTP на другие протоколы
GVFS (который используется для монтирования через SFTP) добавляет лишние слои абстракции через FUSE, что замедляет работу с файлами. Альтернативы:
NFS – встроен в ядро Linux, обеспечивает высокую скорость:
1. На VM установите NFS-сервер:
sudo apt install nfs-kernel-server
2. Создайте экспортируемую директорию в /etc/exports
:
/ваша_папка 192.168.1.0/24(rw,sync,no_subtree_check)
3. На хосте смонтируйте её:
sudo mount -t nfs vm_ip:/ваша_папка /локальная_папка
SSHFS – проще в настройке, чем NFS, но использует FUSE:
sudo apt install sshfs
sshfs user@vm_ip:/удалённая_папка /локальная_папка -o Compression=yes
SMB/CIFS подойдёт, если VM работает под Windows:
sudo mount -t cifs //vm_ip/общая_папка /локальная_папка -o username=user
Для сравнения производительности разных протоколов посмотрите этот обзор. NFS часто выигрывает за счёт кэширования метаданных.
Дополнительные лайфхаки
Даже при идеальной настройке стоит оптимизировать сам VS Code:
- В
settings.json
добавьте исключения для папок, которые не нуждаются в индексации:"search.exclude": {
"**/node_modules": true,
"**/vendor": true
} - Используйте расширение Remote – SSH – оно позволяет работать с проектом на VM как с локальным, минуя монтирование.
- Если файловая система всё равно медленная, включите
files.watcherExclude
– это снизит нагрузку на отслеживание изменений.
Одна из частых ошибок – забыть проверить права доступа при монтировании через NFS/SMB. Если VS Code не видит файлы, выполните chmod -R 755 /папка
на стороне сервера.
И напоследок: если методы кажутся сложными, попробуйте Docker-контейнеры – они изолируют код, но позволяют работать с файлами локально. Главное – не останавливайтесь на SFTP, если поиск тормозит. Как говорится, «настройка занимает час, но экономит дни нервотрёпки».