Obecnie w Bash używam, set -o vi
aby włączyć tryb vi w moim znaku zachęty basha.
Jak mam to zrobić w Ipythonie?
Uwaga: jeśli odpowiedź dotyczy wszystkich * nix, usunę OS X z tytułu :)
Odpowiedzi:
W przypadku, gdy ktoś tu ostatnio błąkał, IPython 5.0 przełączył się z readline na prompt_toolkit , więc zaktualizowaną odpowiedzią na to pytanie jest podanie opcji:
$ ipython --TerminalInteractiveShell.editing_mode=vi
... lub ustawić go globalnie w konfiguracji profilu ( ~/.ipython/profile_default/ipython_config.py
; utwórz go, ipython profile create
jeśli go nie masz) za pomocą:
c.TerminalInteractiveShell.editing_mode = 'vi'
Wygląda na to, że rozwiązanie działa w przypadku wielu innych aplikacji zgodnych z Readline:
Ustaw w ~/.inputrc
pliku:
set editing-mode vi
set keymap vi
set convert-meta on
set convert-meta on
. Koliduje z wpisem Unicode, więc jeśli wkleisz lub wpiszesz Unicode, możesz wywołać różne zdarzenia, co może być zaskakujące. Na przykład spróbuj wpisać ü, a zobaczysz interesujący wynik.
set keymap vi
zmienia układ klawiszy (tj. tryb), na które będą wpływać następujące polecenia , i set convert-meta on
zmienia zachowanie niektórych klawiszy . Nie jestem pewien, czy ich potrzebujesz.
set convert-meta on
(i wszystko poniżej tej linii) będzie dotyczyło tylko trybu poleceń, a nie trybu wstawiania.
Możesz także interaktywnie przełączać się między trybami Vi i Emacs. Zgodnie z dokumentacją readline, aby przełączać się między nimi, powinieneś być w stanie użyć kombinacji klawiszy MCj, ale wydaje mi się, że pozwala mi to tylko przejść do trybu vi - na moim Macu (gdzie klawisz ESC jest używany jako klawisz „Meta” ) to: ESC+ CTRL+ j. Aby wrócić do trybu Emacsa, można użyć Ce, ale to nie działa dla mnie - zamiast tego musiałem zrobić MCe - na moim Macu jest to: ESC+ CTRL+ e.
FYI mój ~ / .inputrc jest skonfigurowany w następujący sposób:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
ipython
używa biblioteki readline i można to skonfigurować za pomocą ~/.inputrc
pliku. Możesz dodać
set editing-mode vi
do tego pliku, aby wszystkie readline
aplikacje oparte na nim używały skrótów klawiszowych w stylu vi zamiast Emacsa.
ipython
przełączane z readline
do biblioteki Pythona o nazwie prompt_toolkit
w 5.0.0
tak to już nie działa.
Możesz ustawić vi w swoim pliku konfiguracyjnym .ipython start-up. Utwórz go, jeśli go nie masz, dodając plik o ~/.ipython/profile_default/startup/
nazwie podobnej do start.py
. Oto przykład:
# Initializing script for ipython in ~/.ipython/profile_default/startup/
from IPython import get_ipython
ipython = get_ipython()
# If in ipython, set vi and load autoreload extension
if 'ipython' in globals():
ipython.editing_mode = 'vi'
ipython.magic('load_ext autoreload')
ipython.magic('autoreload 2')
from Myapp.models import *
Ta ostatnia linia dotyczy sytuacji, gdy używasz ipython z Django i chcesz domyślnie importować wszystkie swoje modele.