Перевод пути Cygwin в Windows

#vim #cygwin #cygpath

#vim #cygwin #cygpath

Вопрос:

ПРИВЕТ, у меня установлен cygwin в моей системе Windows. Я написал две функции в своем файле профиля, чтобы каждый раз, когда я открываю vi / vim, он открывался с помощью gvim.

Но с этим одна из проблем, путь Windows и путь Cygwin. Я попробовал с Cygpath, как показано ниже:

 function vi () 
{ 
    win_file_path=$(cygpath -w $*)
    gvim "$win_file_path" amp; 
}
  

Но с этим, когда я когда-либо открываю файл, подобный этому: « vi /etc/exports 5 «, это приведет к ошибке. Итак, дайте мне знать, если у кого-нибудь из вас есть какое-либо решение.

Ответ №1:

Вы можете обрабатывать только аргументы файла:

 function vi ()  
{   
    local -a viargs
    local a
    while [[ $# -gt 0 ]]
    do
        a="$1"
        if [ -e "$a" ]; then a="$(cygpath -w "$a")"; fi
        viargs[${#viargs[@]}]="$a"
        shift
    done
    gvim "${viargs[@]}" amp;  
}
  

Вместо того, чтобы быть «умным» в отношении существующих файлов, подобных этому, не стесняйтесь упростить обработку только первого аргумента 🙂

В последних версиях bash вы можете заменить уродливую строку

         viargs[${#viargs[@]}]="$a"
  

с помощью

         viargs =( "$a" )
  

Ответ №2:

cyg-wrapper был написан исключительно для этой цели.

ПРИМЕЧАНИЕ: Смотрите также соответствующую страницу wikia.