Как отобразить одну команду энергии для выполнения команд удара на основе ОС?

Можно сделать это с

find . | egrep filename
4
22.04.2011, 05:21
2 ответа

Альтернатива должна была бы просто генерировать привязку клавиш карты правильно для ОС. Например:

if executable("cmd.exe")
    map ,v :!cmd.exe /C start "" "%<.pdf"<CR><CR>
elseif $OSTYPE =~ "darwin.*"
    map ,v :!open '%<.pdf'<CR><CR>
elseif executable("gnome-open")
    map ,v :!gnome-open '%<.pdf'<CR><CR>
endif

Это было протестировано и, кажется, работает, но поскольку мой сценарий Vim немного шаток, и я, возможно, пропустил некоторые детали как надлежащее заключение в кавычки, я буду, вероятно, идти больше с подходом Jander и просто использовать обертку оболочки, которая я намного выше в письменной форме.

map ,v :!open.sh '%<.pdf'<CR><CR>

И в ~/bin/open.sh:

#!/bin/sh

if echo "$OSTYPE" | grep "^darwin" >/dev/null 2>&1; then
    open "$@" &
elif type gnome-open &>/dev/null; then
    gnome-open "$@" &
fi
6
27.01.2020, 20:48
  • 1
    Хороший. Я пропустил идею сделать обнаружение ОС из сценария оболочки. Одна деталь - я думаю, что Вы имеете в виду "открытый для гнома" вместо "терминала гнома". –  Jander 25.04.2011, 07:35
  • 2
    @Jander да, я думал, что было что-то забавное о том, что я записал. –  penguin359 25.04.2011, 20:45

Лично, если бы я собирался сделать это, то я создал бы a ~/bin/open.sh сценарий с любой "открытой" командой корректен для ОС, и удостовериться ~/bin находится в моем пути на всех моих машинах. Это масштабирует лучше тот путь в случае, если я хочу добавить поле Windows+Cygwin, например. Оборотная сторона - то, что у Вас должен быть другой сценарий для каждого типа машины, хотя сценарии очень просты, таким образом, это действительно не слишком плохо.

Так, в ~/bin/open.sh на Mac:

#!/bin/sh
open "$@"

И в ~/bin/open.sh на Linux:

#!/bin/sh
gnome-open "$@"

И в vimrc:

map ,v :!open.sh %<.pdf<CR><CR>

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

... if [ "$OSTYPE" == "darwin10.0" ]; then open %<.pdf; else gnome-open %<.pdf; fi
5
27.01.2020, 20:48

Теги

Похожие вопросы