Co powiesz na dodanie autocmd
do swojego ~/.vimrc
-pliku, utworzenie mapowania:
autocmd FileType python map <buffer> <F9> :w<CR>:exec '!python3' shellescape(@%, 1)<CR>
autocmd FileType python imap <buffer> <F9> <esc>:w<CR>:exec '!python3' shellescape(@%, 1)<CR>
następnie możesz nacisnąć, <F9>
aby wykonać bieżący bufor zpython
Wyjaśnienie:
autocmd
: polecenie, na którym Vim wykona automatycznie {event}
(tutaj: jeśli otworzysz plik Pythona)
[i]map
: tworzy skrót klawiaturowy do <F9>
trybu wstawiania / normalnego
<buffer>
: Jeśli otwartych jest wiele buforów / plików: po prostu użyj aktywnego
<esc>
: wyjście z trybu wstawiania
:w<CR>
: zapisuje twój plik
!
: uruchamia następującą komendę w twojej powłoce (spróbuj :!ls
)
%
: jest zastępowane nazwą pliku aktywnego bufora. Ale ponieważ może zawierać takie rzeczy, jak spacje i inne „złe” rzeczy, lepiej jest nie pisać :python %
, ale użyć:
shellescape
: ucieczka ze znaków specjalnych. Do 1
środków o backslashem
TL; DR: Pierwsza linia będzie działać w trybie normalnym, a po naciśnięciu <F9>
najpierw zapisuje plik, a następnie uruchamia plik w Pythonie. Drugi robi to samo, ale najpierw opuszcza tryb wstawiania
autocmd FileType python nnoremap <buffer> ....
nnoremap <buffer> <F9> :!python %<cr>
wydaje się działać w Vimie 7.4.1689. Do czego służy Shellescape?Po prostu przejdź do trybu normalnego, naciskając
<esc>
i wpisując:źródło
Mam to w moim pliku .vimrc:
Kiedy kończę edytować skrypt w Pythonie, po prostu naciskam
<F5>
. Skrypt jest zapisywany, a następnie wykonywany na pustym ekranie.źródło
m
klawisz plus,
klawisz zamiastF5
klawisza?Insert
trybie. Do wykonania wNormal
trybie użyjnmap
zamiastimap
.Wolę wyjście Pythona przekierowane do nowego okna Vima (a jeśli to okno pozostanie otwarte, zaktualizuj jego zawartość następnym razem, gdy wykonasz kod Pythona tą funkcją):
źródło
.vimrc
? Jeśli nie, jak mam przekazać ten skrypt Vimowi? (Tutaj Noob)Opierając się na poprzednich odpowiedziach, jeśli chcesz zobaczyć kod, patrząc na jego wyjście, możesz znaleźć komendę
:ter
(:terminal
).Użycie
vert
w drugiej linii powoduje uruchomienie kodu w podziale pionowym zamiast poziomym.Wadą tego jest to, że jeśli nie zamkniesz podzielonego okna, w którym został uruchomiony kod, będziesz miał wiele podziałów po wielu uruchomieniach (co nie ma miejsca w oryginalnym Pythonie IDLE, gdzie to samo okno wyjściowe jest ponownie używane).
(Trzymam te linie w środku
/home/user/.vimrc
)źródło
Pamiętaj, że możesz powtórzyć ostatnio używane polecenie
@:
, więc to wszystko, co musisz powtórzyć, to te dwa znaki.Lub możesz zapisać ciąg
w !python
w jednym z rejestrów (jak"a
na przykład), a następnie nacisnąć,:<C-R>a<CR>
aby wstawić zawartość rejestrua
do wiersza poleceń i uruchomić go.Czy można zrobić to, co robię i mapę
<leader>z
, aby:!python %<CR>
uruchomić bieżącego pliku.źródło
Jeśli nie chcesz, aby „
:exec python file.py
” było drukowane za każdym razem, użyj tego:Nie zepsuło to również mojego paska statusu powerline / vim-airline.
źródło
Wtyczka: jupyter-vim
Możesz więc wysłać linie (
<leader>E
), wizualną selekcję (<leader>e
) do uruchomionegojupyter-client
(zamiennikaipython
)Wolę oddzielić redaktora i tłumacza (każdy w swojej powłoce). Wyobraź sobie, że wysyłasz złe polecenie odczytu danych wejściowych ...
źródło
Do ogólnego użytku (uruchom python / haskell / ruby / C ++ ... z vim na podstawie
filetype
), istnieje fajna wtyczka o nazwie vim-quickrun . Domyślnie obsługuje wiele języków programowania. Jest również łatwo konfigurowalny, więc w razie potrzeby można zdefiniować preferowane zachowania dla dowolnego typu pliku. Repozytorium github nie ma wyszukanego pliku readme, ale jest dobrze udokumentowane w pliku doc.źródło
Zaakceptowana odpowiedź działa u mnie (na Linuksie), ale chciałem, aby ta komenda również zapisała bufor przed uruchomieniem, więc nieznacznie ją zmodyfikowałem:
:w <bar>
Zapisuje bufor następnie uruchamia kod w nim.źródło
Prostą metodą byłoby wpisanie
:
w trybie normalnym, a następnie naciśnięcie klawisza strzałki w górę na klawiaturze i naciśnięcie klawisza Enter. Spowoduje to powtórzenie ostatnio wpisanych poleceń w VIM.źródło
Jeśli chcesz szybko wrócić do swoich
:w
poleceń, fajną rzeczą jest wpisanie,:w
a następnie naciśnięcie strzałki w górę. Będzie przechodzić tylko przez polecenia zaczynające się odw
.źródło
Mam to na moim .vimrc:
który zapisuje bieżący bufor i wykonuje kod z preselekcją tylko Esc + F9
źródło
Możesz również użyć skywind3000 / asyncrun.vim . Jest podobny do tego, co wymienił @FocusedWolf.
źródło
Możesz rozszerzyć dla dowolnego języka za pomocą 1 przypisania klawisza za pomocą polecenia augroup, na przykład:
źródło
Pomyśl o użyciu linii shebang, abyś mógł jej używać w każdym języku, nie tylko w Pythonie.
Dodawanie shebang:
Dodaj to do pierwszego wiersza skryptu:
lub tak, jeśli używasz Pythona 2:
Mapa klawiszy Vima:
Dodaj to do
~/.vimrc
:Spraw, aby plik był wykonywalny:
Wpisz Vim:
lub w terminalu:
Wyjaśnienie:
Kiedy F7 jest wciśnięty w trybie normalnym, Vim spróbuje wykonać bieżący plik jako skrypt bash. Wtedy interpreter basha zobaczy linię shebang i zrozumie, że ten plik powinien zostać przesłany do Pythona (lub innego programu, jeśli jest potrzebny).
Będziesz także mógł uruchomić swój skrypt z terminala, używając jego nazwy:
zamiast tego (to też zadziała):
źródło
To mapowanie .vimrc wymaga Conque Shell , ale powiela zachowanie Geany (i innych edytorów X):
Okno zamyka się automatycznie przy wyjściu
:let dummy = conque_term#subprocess('gnome-terminal -e "bash -c \"python ' . expand("%") . '; answer=\\\"z\\\"; while [ $answer != \\\"q\\\" ]; do printf \\\"\nexited with code $?, press (q) to quit: \\\"; read -n 1 answer; done; \" "')
źródło
Umieść kursor gdzieś w kodzie. Kliknij prawym przyciskiem myszy i wybierz jedną z opcji „Wybierz”, aby podświetlić kod. Następnie naciśnij Ctrl: a zobaczysz nowy znak zachęty „<,>”
Teraz wpisz! Python i zobacz, czy to działa.
Po prostu spędzam dni próbując rozwiązać ten sam problem !!! Użyłem kodowania:
Po wyjęciu wszystkich włosów w końcu udało mi się to dobrze!
źródło
:% !python
.%
po prostu oznacza wszystkie linie.Zamiast umieszczać mapowanie poleceń w swoim
.vimrc
, umieść mapowanie w swoim~/.vim/ftplugin/python.vim
pliku (Windows$HOME\vimfiles\ftplugin\python.vim
). Jeśli nie masz tego pliku lub katalogów, po prostu je utwórz. W ten sposób klucz jest mapowany tylko wtedy, gdy otwierasz.py
plik lub dowolny plik za pomocąfiletype=python
, ponieważ będziesz uruchamiać to polecenie tylko w skryptach Pythona.Jeśli chodzi o rzeczywiste mapowanie, lubię móc edytować w Vimie, gdy skrypt działa. Wychodząc z odpowiedzi @cazyas, mam następujące informacje w moim
ftplugin\python.vim
(Windows):Spowoduje to uruchomienie bieżącego skryptu Pythona w tle. W przypadku Linuksa po prostu zmień to na:
źródło
źródło