2013-03-16 15 views
34

Jeśli mam plik z linii shebang (np #!/bin/bash) otwartym w vim i plik posiada uprawnienia do wykonywania (tj chmod +x) Wiem, że mogę pisać to, aby wykonać go bez opuszczania edytora:Vim: wykonać bieżący plik?

:! %:p 
  • : trybu polecenia
  • ! wykonania polecenia powłoki
  • % odnieść się do pliku w bieżącym buforze
  • :p, aby użyć pełnej ścieżki bieżącego pliku

Czy istnieje krótszy skrót do tego częstego zadania?

np. jest ZZ skrót dla :wq itp

Odpowiedz

31
:!%:p 

, bez spacji, jest krótszy.

Jeśli chcesz jeszcze krótszy skrót można tworzyć niestandardowe mapowanie:

nnoremap <F9> :!%:p 

lub bardziej „Mnemonic”:

nnoremap <leader>r :!%:p 
+0

Nie wystarczy, że nie znajduję się w tym samym folderze co plik, który edytuję, i nie chcę o tym myśleć za każdym razem, dla każdego pliku, lub zmuszam się do tego, aby zawsze mieć cd 'przed edycją. Lubię pamięć mięśniową. (Doceniam to, że odpowiadasz i oferujesz rozwiązanie. Dzięki za to.) – Robottinosino

+0

tak, faktycznie poprawiłem swoją odpowiedź przed przeczytaniem Twojego komentarza. – romainl

+10

użyj nnoremap :!%: P , aby zmniejszyć nacisk naciśnięcia klawisza Enter za każdym razem. – hkyi

1

Możesz dodać klucz mapowania do .vimrc

map <F5> :!% 
2

Po wykonywane że kiedyś krótki :!! będzie go powtórzyć.

+0

Tylko jeśli jest to ostatnie polecenie wykonane .. :( – Robottinosino

+0

Ostatni':! ', Który jest. –

8

Jeśli nie ustawić uprawnienia można uruchomić:

:! sh % 
1

Żaden z poprzednich odpowiedzi działać, jeśli ścieżka nazwa_pliku/katalog ma miejsca w nim. Prosta naprawa.