Post History
Python's interactive interpreter uses GNU Readline, so Bash's line interpreter, not Zle, which is Zsh's. Therefore, when you enter python, the cursor either won't change or will change accordingly...
Answer
#1: Initial revision
[Python's interactive interpreter uses GNU Readline][1], so Bash's line interpreter, not Zle, which is Zsh's. Therefore, when you enter `python`, the cursor either won't change or will change accordingly to what you have in [`.inputrc`, which is GNU Readline's initialization file][2]. Likewise for the Vi or Emacs input mode. For a visual proof that `zle-line-init` and `zle-keymap-select` don't get to run while you are in Python, just modify the cursor variables to ``` #Warning: This will be annoying cursor_block=a cursor_beam=b ``` Restart Zsh and you will see that, while those characters are inserted as expected in the Zsh prompt, they are never inserted in the Python prompt. Luckily, you can (at least according to my quick inspection) clone that Zle's behavior for GNU Readline: ``` # This goes in $HOME/.inputrc set editing-mode vi set show-mode-in-prompt on set vi-cmd-mode-string "\1\e[2 q\2" set vi-ins-mode-string "\1\e[6 q\2" # Previous three lines are from https://stackoverflow.com/a/48449104 ``` and then Python will behave consistently. [1]: https://docs.python.org/3.8/library/readline.html [2]: https://www.gnu.org/software/bash/manual/html_node/Readline-Init-File.html