Я недавно изменил ОС Windows для Ubuntu. Как разработчик, я действительно любил WinSCP для Windows и просто не могу найти другую подходящую программу для Linux.
Тем не менее, все работает нормально с WinSCP, работающим на Wine, за исключением того, что я не могу просто дважды щелкнуть файл и открыть его в Sublime Text Editor.
в «Предпочтениях» -> «Редакторы». Я пытался установить / usr / bin / subl и / opt / sublime_text / sublime_text в качестве редакторов по умолчанию, но ни один из этих двух вариантов не работает для меня.
Когда я открываю файл на удаленном сервере, открывается Sublime, но он пуст, без содержимого внутри. Или, если щелкнуть правой кнопкой мыши и выбрать «Открыть» из меню, я получу «Нет программы для Windows, настроенной на открытие этого типа файла».
Кто-нибудь знает, как настроить WinSCP для открытия файла в локальном редакторе?
У меня была точно та же проблема (Ubuntu + Wine + WinSCP + Sublime
) и Сублимат давал мне пустые страницы, после того как я попытался отредактировать с ним. Поиск с помощью Google ничего не дал мне так, что я сделал свое собственное решение для этого (протестированный на Ubuntu 14.04 Trusty
)
Вот мое решение и исследование.
Решение протестировано и работы с Ubuntu 14.04 Trusty
+ Sublime 3
+ Wine-1.6.2
. Я думаю, что это будет также работать на Debian (не протестировали).
Я разделил решение на 2 сценария, чтобы иметь два универсальных инструмента вместо одного определенного.
Решение, добавляет сценарий для фиксации пути, прежде чем это будет get's для Сублимации:
wine2unix-path
преобразует Вино "путь окон" к реальной файловой системе, соединяют каналом и фиксируют, это - формат (кавычки и двойные обратные косые черты \\
)sublime.exe
будет использовать зафиксированный реальный путь к файлу от wine2unix-path
и передаст его в Сублимат.Я назвал первый сценарий "sublime.exe", потому что иначе Вино отказывается видеть его в настройках "Editors", когда я обновляю путь редактора.
Шаги, чтобы сделать:
/usr/local/bin/wine2unix-path
/usr/local/bin/sublime.exe
WinScp
Шаг 1. wine2unix-путь
Использование в качестве примера: wine2unix-path c:\\Program files\\WinScp\\Log.txt
возвраты /home/YOUR_CURRENT_LINUX_USER/.wine/drive_c/Program files/WinScp/Log.txt
.
sudo touch /usr/local/bin/wine2unix-path
sudo chmod +x /usr/local/bin/wine2unix-path
Помещенный после сценария в него:
#!/bin/bash
# Trim quotes
FILE=$(echo "$@" | sed -e "s#\(^['\"]*\)\|\(['\"]*$\)##g")
USER_NAME=$(id -u -n)
DRIVE_LETTER="`echo $FILE | sed -e "s/^\([a-Z]\):.*/\1/" | awk '{print tolower($0)}'`"
echo "$FILE" | sed \
-e 's#\\#\/#g' \
-e "s#^[a-Z]:#/home/${USER_NAME}/.wine/drive\_${DRIVE_LETTER}#"
exit 0
Что этот сценарий сделайте:
FILE
- Получите путь к файлу и обрезку "
и '
кавычки, если существует кто-либоUSER_NAME
- Получите текущее имя пользователя/home/USER
DRIVE_LETTER
- Получите букву диска от пути к файлу (первый символ). Это может отличаться C:\
относится к .wine/drive_c
, D:\
относится к .wine/drive_d
и т.д.C:\
с полным путем к винной папке. C:\
становится /home/USER/.wine/drive_c
\\
(завершенные обратные косые черты в окна путь) с \
, иначе C:\\users\\files
стать C:usersfiles
когда это передало сублимату.Шаг 2. sublime.exe
sudo touch /usr/local/bin/sublime.exe
sudo chmod +x /usr/local/bin/sublime.exe
/opt/sublime_text/sublime_text
путь в сценарии ниже (длятся строку) с Вашим сублимированный путь.Мой Sublime version 3103
расположен в /opt/sublime_text/sublime_text
#!/bin/bash
# Wrapper script to open sublime from Wine
#
# File path passed as a first argument should be "quoted" and "escaped"
# other wise spaces will split path into two
#
# For example: sublime.exe "c:\\Program files\\WinScp\\Log.txt"
#
# wine2unix-path is a help script to convert "Wine windows paths"
# to real paths in linux so sublime can access it
#
# For for example:
# ./sublime.exe "c:\\Program files\\WinScp\\Log.txt"
# Will result:
# /home/YOUR_CURRENT_LINUX_USER/.wine/drive_c/Program files/WinScp/Log.txt
unixpath="`wine2unix-path $1`"
/opt/sublime_text/sublime_text "$unixpath"
Что этот сценарий сделайте:
Шаг 3. Обновите путь редактора в WinScp
WinScp
Options > Preferences > Editors
Edit
кнопкаZ:\usr\local\bin\sublime.exe \"!.!\"
Ok
.ГотовоAdd
(чтобы добавить сублимированного редактора и присвоить его типам файлов).Z:\usr\local\bin\sublime.exe \"!.!\"
*.ini; *.txt; *.php; *.tpl
или *.*
для всех типов файловEditor preferences
. Это сделает приоритет для типов файлов, которые Вы выбрали для Сублимата.Изображение: Сублимированные настройки в WinScp
Проблема появляется в пути к файлу, который Вино передает Сублимату:
"
или '
когда это передало сублимату\\
Пример:
/server/user/www/my project/some other file.php
Z:\opt\sublime_text\sublime_text /home/CURRENT_USER/.wine/drive_c/Program files/WinScp/server/user/www/my project/some file.php
(путь, не заключенный в кавычки или, вышел),/opt/sublime_text/sublime_text /home/CURRENT_USER/.wine/drive_c/Program files/WinScp/server/user/www/my project/some file.php
./opt/sublime_text/sublime_text
/home/CURRENT_USER/.wine/drive_c/Program
files/WinScp/server/user/www/my
project/some
file.php
Как путь результата, разделяемый пробелами из-за кавычек отсутствия. Когда я нашел позже существует также проблема с двойными Escape \\
в пути