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

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

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

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

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

2 ответа

Решение

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

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[@]}" &  
}

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

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

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

с

        viargs+=( "$a" )

cyg-обертка была написана для этой единственной цели.

NB: Смотрите также соответствующую страницу вики.

Другие вопросы по тегам