Vim ignoruje pseudonimy

11

Jeśli odwzoruję polecenie w vimie, używając czegoś podobnego

map <f4> :! pdflatex %<cr>

Vim zignoruje mój alias dla pdflatex (coś w stylu aliasu pdflatex = 'pdflatex --temp-dir = coś'). Czy jest możliwe, aby vim nie ignorował tego?

vonhogen
źródło
Czy to możliwe, że twoja powłoka lub typ powłoki nie pasują do powłoki logowania?
DaveParillo

Odpowiedzi:

16

Vim „ignoruje” twoje aliasy, ponieważ twoja powłoka nie jest w „nastroju” do parsowania twojego .bash_profile/.bashrc(nie określiłeś, gdzie twoje aliasy są zdefiniowane), ponieważ nie jest uruchamiana jako powłoka logowania / interaktywna (czytaj tutaj, aby dowiedzieć się więcej o co jest czytane, kiedy iz jakiego powodu).

Masz więc kilka opcji:

  1. Umieść kod używany w pdflatexaliasie w skrypcie i wywołaj go
  2. vimrc:, 'set shell=/bin/bash\ -l'umieść swoje aliasy w .bash_profile
  3. Zadzwoń do powłoki jako powłoki interaktywnej / logowania: :! bash -l -i -e 'pdflatex .'
akira
źródło
2
Logowanie / brak logowania nie ma znaczenia ~/.bashrc- tylko interaktywne / nieinteraktywne.
user1686
moje aliasy są w .bash_profile .. hmm trochę zmieniłem pytanie. Wolę, aby działał w bieżącej powłoce. Drugie rozwiązanie wydawało się najbardziej „akceptowalne”, jednak sprawia, że ​​zmienna% jest bezużyteczna, ponieważ otwieranie nowej powłoki zwykle rozpoczyna się w folderze domowym.
vonhogen
To niesamowita i dokładna odpowiedź. Dzięki!
Abel