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 :)
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
Źródło: http://www.jukie.net/bart/blog/20040326082602
źródło
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 , iset 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
źródło
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.źródło
ipython
przełączane zreadline
do biblioteki Pythona o nazwieprompt_toolkit
w5.0.0
tak to już nie działa.Musiałem mieć możliwość interaktywnego przełączania trybów w IPython 5 i odkryłem, że możesz to zrobić, odtwarzając menedżera monitów w locie:
a = get_ipython().configurables[0]; a.editing_mode='vi'; a.init_prompt_toolkit_cli()
źródło
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 dostart.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.
źródło