Emacs to doskonały edytor - mówi się jednak, że „ aby programować, potrzebujesz najpierw IDE ” - więc jak zbudować IDE w Emacsie z wieloma możliwościami dostosowania, ze wszystkimi funkcjami nowoczesnego IDE. Chcę mieć możliwość skutecznego debugowania, uruchamiania i kompilowania kodu oraz zarządzania nim. Do tej pory przeczytałem na ten temat, że zainstalowałem pakiet Elpy, ale nie jestem pewien, co jeszcze trzeba wiedzieć i robić, aby to umożliwić.
56
Odpowiedzi:
Domyślny tryb Pythona w Emacsie ma wiele funkcji, w tym uzupełnianie kodu w oparciu o gorszą powłokę Pythona, dzięki czemu można go używać jako podstawowego IDE bez żadnych dodanych pakietów. W Pythonie możesz także używać innych podstawowych funkcji Emacsa. Na przykład
M-x compile
/M-x recompile
może być użyte do uruchomienia testów.M-x pdb
może uruchomić debuger Pythona i integruje się ze środowiskiem GUD Emacsa, dzięki czemu można uzyskać wbudowane punkty przerwania.Aby to rozwinąć, istnieją trzy główne pakiety dla Emacsa, które próbują zaimplementować bardziej funkcjonalne IDE Pythona (w kolejności alfabetycznej):
Wszystkie zapewniają w przybliżeniu te same funkcje:
Poza tym Emacs może również pomóc ci w wielu przepływach pracy, ale nie przepisuje żadnego. Kolejne kroki zależą więc bardzo od tego, jak korzystasz z Pythona. Najlepszym rozwiązaniem byłoby tutaj wymyślenie dobrego przepływu pracy w Pythonie, a następnie próba znalezienia pakietów Emacsa, które pomogą ci konkretnie w krokach w twoim przepływie pracy.
Na przykład istnieje wiele pakietów do pracy z virtualenvs (Elpy, o których wspominasz, zawiera pyvenv), których prawdopodobnie powinieneś użyć. Emacs-Jedi ma tryb towarzyszący do przeglądania kodu, który może być przydatny. Jeśli często korzystasz z IPython, istnieje IPython Notebook dla Emacsa. Istnieją specjalne tryby wsparcia dla rozwoju Django itp. - możesz przejść do http://melpa.org/ i poszukać Pythona, aby uzyskać pomysły.
Poza Pythonem możesz skorzystać z dodatkowych pakietów Emacsa, które ogólnie pomagają w programowaniu. Projectile to ogólny pakiet do zarządzania projektami, który oferuje szereg interesujących funkcji, takich jak wyszukiwanie w projekcie lub przechodzenie między testami a implementacjami. Jeśli nie został jeszcze zainstalowany jako zależność od wybranego pakietu IDE, możesz także użyć YASnippet, który zapewnia inteligentne fragmenty kodu do generowania kodu. Domyślna kolekcja fragmentów zawiera także wiele fragmentów dla Pythona.
Ale znowu, główne pakiety IDE powyżej zapewnią ci rozsądne środowisko - kolejne kroki w dużym stopniu zależą od twoich konkretnych przepływów pracy.
(Pełne ujawnienie: jestem autorem Elpy, więc weź to pod uwagę, czytając powyższe.)
źródło
elpy
codziennie i mam krótkie pytanie o twoją odpowiedź, kiedy mówisz, że „M-x pdb
można uruchomić debugger Pythona” , jak to dokładnie jest? Mam bufor w języku Python, a gdy to zrobięM-x pdb
, w minibuforze pojawia się monit"Run pdb (like this): pdb my_file.py"
. Kiedy naciskam,RET
pojawia się komunikat „ImportError: Żaden moduł o nazwie pdb.pdb:„ pdb nie jest pakietem ”. Jest to najnowszy PYthon 3.4 po uaktualnieniu pdb za pomocą pip, co daje mi:$ pip freeze | grep pdb => pdb==0.1
pdb
nie zostanie znaleziony, alepython
zostanie znaleziony lokalnie, możesz uruchomić pdb, używającM-x pdb
„Uruchom pdb (jak to): python -m pdb my_file.py`Zachęcałbym użytkowników emacia zła do wypróbowania kosmicznych znaków .
Ma świetną warstwę pytona, zobacz szczegóły tutaj: https://github.com/syl20bnr/spacemacs/tree/master/layers/!lang/python
Obecnie obejmuje:
Instalacja jest niezwykle łatwa, wystarczy dodać następujący wiersz do
~/.spacemacs
:źródło
dotspacemacs-configuration-layers
. Dodaj to :)Używam trybu celu . Pozwala to zdefiniować dość solidne środowisko.
Korzystanie
elpy
,pydoc
ineotree
mam dość solidne środowisko (w tym sensie, że okna nie robią dziwne rzeczy na błędy). Może to również działać całkiem dobrze przygud-pdb
debugowaniu.źródło
Oto obszerny przewodnik: http://wikemacs.org/wiki/Python Zawiera listę gotowych do użycia rozwiązań ( zestaw startowy Prelude , Spacemacs, rozwiązania dla nauki danych ,…), a także duże przydatne pakiety (Elpy) jak każdy pakiet, którego potrzebujesz, aby poprawić swoje środowisko. Oto przegląd .
Refaktoryzacja
Jest to najbardziej „specyficzna dla IDE” funkcja. Emacs jako pewne możliwości dzięki bibliotece Python Rope. Okazuje się, że najłatwiejszym sposobem instalacji i użytkowania jest pakiet emacs-traad w MELPA. Posiada między innymi:
Lina jest również zawarta w Elpy.
Prostsza manipulacja kodem
Mamy prostsze narzędzia do refaktoryzacji lub manipulacji kodem: http://wikemacs.org/wiki/Python#Other_Python_.22refactoring.22_tools
Na przykład Pocisk jest świetny (zobacz inne odpowiedzi), mamy również narzędzie do dodawania dekoratorów , dodawania / usuwania / edycji argumentów , zmiany nazwy / kopiowania / komentarza / zabicia metody, narzędzie do generowania kodu,…
Nawigacja po kodzie
Możemy nawigować jako IDE z tagami i cscope: znaleźć funkcje wywołujące tę funkcję, znaleźć zdarzenia itp.
Emacs ma również świetne pakiety, takie jak imenu (helm-imenu), helm-swoop (interaktywny grep w buforze), emacs-helm-ag (interaktywna wyszukiwarka srebra w projekcie) itp.
Uruchamianie testów
To Elpy zapewnia dobre wsparcie do uruchamiania testów (z django runner, elpy lub innym). Możemy nawet przeprowadzić tylko test jednostkowy, w którym się obecnie znajdujemy: bardzo przydatny! Jest więc Hydra, która może w tym pomóc (cicle między błędami, przejdź do pytania w python…).
Zrób wsparcie
Jest to pakiet Emacsa, który nie jest specyficzny dla Pythona. Ale lubię być w stanie uruchomić make make z dowolnego miejsca w projekcie i wybrać polecenie make z ukończeniem . połączyć
Radzenie sobie z wcięciem
Istnieje mały pakiet, narzędzia wcięcia , które dają polecenia do pracy bezpośrednio z wciętym blokiem: przejdź do następnego-poprzedniego-potomnego-rodzica bloku wcięcia, wcięcia / deindent / komentarz / kopiuj / zabij / złóż bieżący blok , itp. Idealny dla yaml, a także dla Pythona. Wersja demonstracyjna dokumentów i gifów
Wsparcie Django
patrz Django . Elpy obsługuje biegacza django. Zobacz elpy django doc . Tryb django (w melpa) ma podświetlanie szablonów, szybkie polecenia, uzupełnianie poleceń zarządzania ,…
Ważne jest także: świetne wsparcie dla Git, Github i Gitlab
magithub może tworzyć PR github, możemy pobierać problemy i wstawiać ich referencje w komunikatach zatwierdzania, magit jest świetny,… zobacz http://wikemacs.org/wiki/Git
źródło
Odpowiedzi tutaj dostarczyły większość ważnych funkcji, które zapewnia spacemacs, ale zawsze była jedna cecha, której nie mogłem znaleźć - DEBUGGING (do niedawna nie znalazłem żadnych przyzwoitych narzędzi do debugowania, które działałyby dobrze w przypadku spacemacs)
Jak więc skonfigurować przepływ pracy debugowania dla moich spacemacs?
W przygotowaniu jest gałąź funkcji, która wykorzystuje pakiet realgud.el, aby zapewnić zbliżone do IDE doświadczenie debugowania w spacemacs: https://github.com/CeleritasCelery/spacemacs Wszystko, co musisz zrobić, to przeciągnąć tę gałąź do pliku .emacs. d katalogu i wprowadź zmiany w pliku ~ / .emacs.d / layer / + lang / python / packages.el
Szczegółowe kroki, aby skonfigurować spacje do debugowania (Weź głęboki oddech)
remote add debug-layer https://github.com/CeleritasCelery/spacemacs fetch debug-layer checkout --track debug-layer/debug-layer branch -a
Teraz otwórz ~ / .emacs.d / layer / + lang / python / packages.el i dodaj poniższą funkcję na końcu pliku.
;; configure trepan3k as the python debugger to be used with realgud (defun python/pre-init-realgud() (dolist (mode '(anaconda-mode)) ;; bind trepan3k with anaconda mode (spacemacs|add-realgud-debugger mode "trepan3k")))
Ta funkcja używa debuggera trepan3k jako debuggera python. Możesz zmienić wartość na pdb lub ipdb lub dowolny inny debugger. Jeśli planujesz używać trepan3k, upewnij się, że instalujesz go z pipem,sudo pip install trepan3k
ponieważ nie jest on wstępnie instalowany z dystrybucją Pythona.Teraz otwórz plik .spacemacs i warstwę „debugowania” w warstwach konfiguracyjnych dotspacemacs w ten sposób
dotspacemacs-configuration-layers '( (python :variables python-enable-yapf-format-on-save t flycheck-disabled-checkers '(python-flake8) flycheck-checker 'python-pylint ) debug )
Spowoduje to rozpoczęcie sesji debugowania i możesz dodawać, usuwać punkty przerwania za pomocą skrótów klawiszowych realgud wyjaśnionych tutaj: https://github.com/realgud/realgud#source-window-commands
Jesteś skończony!
źródło