Как я могу использовать псевдоним «gvim filename» для «gvim filename &»

Я хочу, чтобы gvim всегда открывался в отдельном окне и немедленно возвращал командную строку. Другими словами, я хочу

gvim filename

быть таким же, как

gvim filename &

похоже, я должен иметь возможность сделать это с псевдонимом. Есть ли специальный подстановочный знак для псевдонимов? Что-то типа:

alias gvim="gvim <wildcard> &"

Где «подстановочный знак» будет заменен любым текстом, который следует после gvim в командной строке.

Я также пробовал:

function gvim() 
{ 
    "/cygdrive/c/program files (x86)/vim/vim72/gvim.exe" "$@" "&" ;
}

Но он только открывает gvim и не возвращает подсказку, как я хочу.

Если бы кто-то мог указать мне правильное направление, это значительно улучшило бы мое понимание того, как работает .bashrc.

Спасибо!

-Дерек

ОБНОВЛЕНИЕ: я заставил его работать, избавившись от кавычек вокруг & и точки с запятой в конце:

function gvim() 
{ 
    "/cygdrive/c/program files (x86)/vim/vim72/gvim.exe" "$@" &
}

person derekswanson08    schedule 07.11.2012    source источник


Ответы (4)


Последнее почти верно. Что неправильно, так это то, что простой & указывает shell запустить процесс в фоновом режиме, а "&" добавляет аргумент в командную строку gvim (т. е. указывает gvim открыть файл с именем &). Используя здесь кавычки, вы просто указываете оболочке не обрабатывать & специально, и у gvim нет причин выполнять работу оболочки.

person ZyX    schedule 07.11.2012
comment
Спасибо, я заставил это работать, удалив кавычки вокруг & и избавившись от ;. Теперь он работает отлично. - person derekswanson08; 08.11.2012
comment
Можете ли вы просветить меня, почему использование завершающей точки с запятой является синтаксической ошибкой, когда я не использую кавычки вокруг амперсанда, но это нормально, когда я использую кавычки? - person derekswanson08; 08.11.2012
comment
@ derekswanson08 Вам здесь нечего завершать. Команда уже была завершена &. - person ZyX; 08.11.2012
comment
@derekswanson08 derekswanson08, вы можете пометить это как принятый ответ, чтобы он не отображался как открытый вопрос. - person none; 08.11.2012

вместо использования псевдонима используйте функцию оболочки. В целом это работает так же, и у вас есть больше возможностей:

function gvim() {
 gvim.bat `cygpath -w $*` &
}

Обновление Кроме того, в файле .bashrc по умолчанию (во всяком случае, на моем компьютере) есть несколько хуков для автоматической загрузки функций из файла «.bash_functions», вам просто нужно его раскомментировать (о строке 117 для меня) :

# Functions
#
# Some people use a different file for functions
if [ -f "${HOME}/.bash_functions" ]; then
  source "${HOME}/.bash_functions"
fi

затем добавьте определение функции в .bash_functions, чтобы оно автоматически загружалось при запуске оболочки bash.

В обновлении 2 добавлен вызов cygpath для обработки полных путей в формате unix.

person Gus    schedule 07.11.2012
comment
мой ответ зависит от того, ответили ли вы «да» на вопрос об установке gvim, спрашивающий, хотите ли вы, чтобы он создавал пакетные файлы для доступа к командной строке... - person Gus; 07.11.2012

Что я делаю, так это небольшой скрипт bash, который я называю gvim и псевдонимом.

==> alias vi
alias vi='~/include/bin/dvim'

==> cat ~/include/bin/dvim
#!/bin/bash.exe

/cygdrive/c/Program\ Files/Vim/vim73/gvim.exe $1 &
person Daniel Haley    schedule 07.11.2012

Первое, что нужно понять о .bashrc, вероятно, это то, что он читается только при запуске оболочки - в случае с cygwin, когда вы открываете командное окно. Из вашего сообщения неясно, перезапускаете ли вы свое командное окно или что.

Вы можете поэкспериментировать с псевдонимами/функциями, не помещая их в .bashrc, просто чтобы узнать, что работает. Просто введите псевдонимы или определения функций непосредственно в командной строке, а затем попробуйте их запустить.

Я думаю, что проблема с предоставленной вами функцией заключается в том, что вы поместили & в двойные кавычки. Убери кавычки и все должно работать.

person BobS    schedule 07.11.2012
comment
Вы также можете вручную использовать исходные файлы в командной строке. . .bashrc сделает это для .bashrc (. — псевдоним для source). - person dash-tom-bang; 08.11.2012