Terminal/iTerm2 issue: reverse-i-search trims off command
I've been having this issue since 10.9.
- cd into a reasonably long path, e.g.,
cd /Volumes/Storage/backup/long/path
- Enter a moderately long command, e.g.,
curl -X GET http://localhost:8888
-
ctrl+R, type
curl
- ctrl+E
The command displayed is shifted to far to the left and leaving whitespace to the right like so:
Is this a known bug or is it just me?
Solution 1:
It's your $PS1
- it's not properly escaped. You have to escape all non-printing characters with \[
and \]
. For example, if you have
PS1='\e[32m\u \W\e[0m $ '
you have to change it to
PS1='\[\e[32m\]\u \W\[\e[0m\] $ '
or your cursor will appear far to the right because your shell thinks your prompt is that long, and when it retypes the command it can't find it. Annoying, I know. In zsh
you need to use %{
and %}
IIRC.
And while you're considering switching to another shell, I'd suggest fish. It's a bit more of a jump, but it keeps me sane.