GNU/Linux >> Znalost Linux >  >> Linux

Jak namapovat jeden příkaz Vim k provádění příkazů Bash založených na OS?

Stručně řečeno, mohou jednotlivé příkazy bash v terminálu obsahovat podmínky? Pokud ano, jak?

Mám ve svém vimrc (sdíleném napříč systémy) následující příkaz k otevření mého aktuálního dokumentu LaTeX ve formátu .pdf:
map ,v :!gnome-open %<.pdf <CR> <CR>

Moje otázka zní, jaký je nejlepší způsob, jak nechat ,v spustit jednoduše „otevřít %<.pdf“, když jsem doma na svém počítači s OS X? Zde je můj odhad pseudokódu:

... if [$OSTYPE == "darwin*"] then open %<.pdf else gnome-open %<.pdf ...

To se provádí jako jeden příkaz BASH. Jsou takové podmínky možné? Pokud ano, mohl by mi někdo pomoci se syntaxí? Pokud ne, lze to provést pomocí podmínek v souboru vimrc?

Přijatá odpověď:

Alternativou by bylo pouze vygenerování správného přiřazení mapy pro operační systém. Například:

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

Toto bylo testováno a zdá se, že to funguje, ale protože můj skript Vim je trochu nejistý a možná mi unikly některé detaily, jako je správné citování, pravděpodobně bych se více přiklonil k Janderovu přístupu a použil bych pouze obal, který jsem v psaní mnohem lepší. .

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

A v ~/bin/open.sh :

#!/bin/sh

if echo "$OSTYPE" | grep "^darwin" >/dev/null 2>&1; then
    open "[email protected]" &
elif type gnome-open &>/dev/null; then
    gnome-open "[email protected]" &
fi

Linux
  1. Jak používat příkazy historie Bash

  2. Jak se zdá, že tento příkaz Su -c „…“ předává dva příkazy místo jednoho?

  3. Jak mohu provést řadu příkazů v subshell bash jako jiný uživatel pomocí sudo?

  1. Jak vymazat historii Bash na Linuxu

  2. Jak spustit příkaz bash s právy sudo v Javě?

  3. Jak časový limit skupiny příkazů v Bash

  1. Jak provádět externí příkazy shellu z ovladače laravel?

  2. Jak spustit bash skript?

  3. Jak přidat příkaz do editoru vim?