Перевод пути 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: Смотрите также соответствующую страницу вики.