Вопрос или проблема
У меня установлен neovim в WSL. Чтобы получить к нему доступ, я открываю ConEmu, который настроен использовать по умолчанию WSL Bash при запуске
На Windows часто бывает необходимость быстро редактировать файл, и для этого я обычно нажимаю на него правой кнопкой мыши и выбираю “Открыть с помощью…” (любой установленной на Windows программы, которая мне нужна).
Есть ли способ добавить neovim в меню “Открыть с помощью”, чтобы, когда мне нужно отредактировать файл, он открывал ConEmu, который запустит Bash, запустит neovim и откроет файл для редактирования?
Не обязательно, чтобы это было связано с меню “Открыть с помощью”, подойдет все, что находится в одном клике или в каком-либо другом контекстном меню. Главное, чего я хочу избежать, это необходимость вручную открывать ConEmu/Bash/neovim и переходить к файлу, так как это сводит на нет саму цель (скорость)
Я видел похожие вопросы (например, Добавление Bash на Ubuntu в Windows 10 в контекстное меню Проводника (Проблемы)), но это касается большего, чем просто добавление Bash в Windows в контекстное меню, я бы хотел иметь возможность открывать файл с помощью neovim также
Добавьте этот алиас в свой bash/zsh профиль
alias explorer="/mnt/c/Windows/explorer.exe"
Тогда вы можете открывать папки или файлы следующим образом: explorer ./src/main
или explorer logfile.txt
Возможно, это можно сделать аналогично тому, как я сделал для открытия файла с помощью Git Bash For Windows VIM:
[HKEY_CLASSES_ROOT\*\shell\Vim]
@="Edit &file with Vim"
"Icon"="C:\\Program Files\\Git\\git-bash.exe"
[HKEY_CLASSES_ROOT\*\shell\Vim\command]
@="\"C:\\Program Files\\Git\\git-bash.exe\" -c \"vim \\\"$(echo '%1' | sed 's/\\\\\\\\/\\\\//g' | sed 's/C:/\\\\/c/g' | sed 's/D:/\\\\/d/g')\\\"\""
; Обновите путь к Git Bash for Windows выше.
; ИНФО: Как и выше, скрипт может преобразовывать пути только с C: или D:. Просто добавьте еще один "| sed 's/E:/\\\\/e/g'" (без ") если вам нужно дополнительно.
GitHub Gist здесь: https://gist.github.com/dwettstein/e5349a12852a7aadfda419e76124919c
РЕДАКТИРОВАНИЕ: Это возможно, но вам нужно исправить всю обработку путей выше.
РЕДАКТИРОВАНИЕ2: Мне удалось сделать это! Однако я использую Vim, а не Neovim. Смотрите здесь: https://gist.github.com/dwettstein/6a01af11f830b96d686e12500e7c7d0b
Здесь я добавляю что-то о том, как открыть Bash в Windows 10. Перейдите в “Настройки”. …
Нажмите “Обновление и безопасность”.
Выберите “Для разработчиков” в левой колонке.
Выберите “Режим разработчика” в разделе “Использовать функции разработчика”, если он еще не включен.
Перейдите в Панель управления (старую Панель управления Windows). …
Выберите “Программы и компоненты”. …
Нажмите “Включение и отключение компонентов Windows”.
Ответ или решение
В современном смешанном окружении, где пользователи часто работают между Windows и WSL (Windows Subsystem for Linux) с различными инструментами, особенно важно иметь возможность быстро и удобно открывать файлы в нужных приложениях. В вашем случае, вы хотите организовать быстрый доступ к редактору neovim, установленному в WSL, через контекстное меню Windows. Рассмотрим, как этого можно достичь.
Теория
Windows Subsystem for Linux (WSL) предоставляет возможность запускать Linux-программы на Windows, что значительно упрощает интеграцию разных операционных систем. Это позволяет использовать мощные инструменты Linux, такие как neovim, без покидания среды Windows. Однако вызов приложений WSL из Windows требует особого подхода к обработке путей и вызову программ.
Для того чтобы открыть файл через neovim в вашем WSL из контекстного меню Windows, необходимо сочетать функциональность WSL с оболочкой ConEmu, которая уже используется вами для запуска bash. Этот процесс включает в себя настройку реестра Windows и правильную передачу путей файлов между Windows и WSL.
Пример
Рассмотрим, как можно настроить окружение для открытия файлов с помощью neovim через контекстное меню Windows.
-
Настройка реестра Windows:
Для начала, создадим запись в реестре, которая позволит запускать команды, вызывающие neovim через ConEmu и WSL. Для этого вам нужно открыть редактор реестра (regedit) и добавить следующие ключи:
[HKEY_CLASSES_ROOT\*\shell\EditWithNeovim] @="Open with Neovim" "Icon"="C:\\Path\\To\\Your\\Icon.ico" [HKEY_CLASSES_ROOT\*\shell\EditWithNeovim\command] @="\"C:\\Path\\To\\ConEmu\\ConEmu64.exe\" -run bash -c 'nvim $(wslpath \"%1\")'"
Здесь вам нужно заменить
C:\\Path\\To\\ConEmu\\ConEmu64.exe
на фактический путь к вашему ConEmu. Также стоит отметить, чтоwslpath
используется для преобразования Windows путей в формат, понимаемый WSL. -
Настройка профиля bash:
Чтобы запускать ConEmu с bash из контекстного меню, обеспечив корректное открытие neovim, возможно, потребуется убедиться, что профиль bash (
.bashrc
или.zshrc
) содержит все необходимые алиасы и переменные. Например:alias neovim='nvim'
Этот алиас гарантирует, что вызов
neovim
будет обращаться непосредственно к установленному в WSL neovim.
Применение
После настройки реестра и оболочки вы сможете открыть любой файл в neovim, просто кликнув правой кнопкой мыши и выбрав Open with Neovim из контекстного меню. Этот процесс значительно ускоряет переход к редактированию без необходимости вручную запускать ConEmu и вручную вводить команды для открытия файлов в neovim.
Заключение
Предложенное решение решает проблему быстрого доступа к редактору neovim, исключая лишние шаги и обеспечивая более плавную интеграцию WSL и Windows. Это достигается с помощью правильной настройки реестра Windows и использования ConEmu для запуска WSL. Такой подход не только следит за удобством пользователя, но и демонстрирует возможность глубокого сочетания различных операционных систем для наиболее продуктивной работы.
Таким образом, вы можете использовать мощь Linux инструментов прямо из вашей среды Windows, эффективно управляя своими рабочими процессами и динамически взаимодействуя с различными файлами и приложениями.