Команды истории отображаются неправильно в режиме Bash Vi

У меня возникла эта странная и очень раздражающая проблема в режиме bash vi-mode.

Env: Mac 10.9.2, iTerm 2 1.0 или Terminal.app,$TERM={screen-256color|xterm-256color|xterm|vt}

Шаги воспроизведения:

  1. Запустите несколько длинных команд (например, 'some_long_commands_long_long')
  2. Нажмите Esc, а затем нажмите k.

Проблема в следующем:

  1. Я вижу "some_long_commands_long_long" в своей командной строке. Но курсор находится не в начале, а на 12-м символе, см. скриншотвведите описание изображения здесь

  2. Если я нажму A, чтобы добавить какой-либо другой текст, курсор выйдет за пределы команды, что означает, что РЕАЛЬНАЯ команда начинается с того места, где курсор находится в первую очередь, рендеринг неправильный.

    введите описание изображения здесь

Я искал в Google, но ничего не нашел ..... У кого-нибудь есть лучшее представление об этом? Большое спасибо...

Ответы (2)

После долгой отладки я наконец понял это. Это проблема, вызванная PS1. По сути, я забыл обернуть свой цветной «>» с помощью «\[» и «\]».

Основываясь на комментариях в Stackoverflow, ИМХО проблема заключается в комбинации tmux/iTerm/settings, а не в самой bashсебе. Вы должны попытаться решить проблему шаг за шагом:

  1. начать Terminal.appс чистого ~/.profile и~/.tmuxrc
  2. попробуй set -o viбезtmux
  3. если работает, (должно) - переключиться iTermи проверить еще раз (должно работать)
  4. начните tmuxв Terminal.appи в iTermи сравните... оба должны работать.
  5. шаг за шагом включите вашу .tmuxrcконфигурацию...
Спасибо! После долгой отладки я наконец понял это. Это проблема, вызванная PS1. По сути, я забыл обернуть цветные «>» в ​​«[» и «]» в своей PS1 ... Еще раз спасибо за всю помощь!