#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.