Как я мешаю своему терминалу удара предварительно ожидать части предыдущих команд к моей текущей строке?

Я использую Ubuntu (10.04) с ударом и сталкиваюсь с нечетной проблемой. После того, как я буду использовать стрелку вверх, чтобы прокрутить назад через мою историю команд и возвратиться к одной из более длительных команд (т.е. один с достаточными символами для обертывания на экране), но затем продолжать прокручивать или вперед или назад, первые 8 или 9 символов той долгой команды обнаруживаются на моей строке ввода.

Эти символы не оказывают влияния на любую команду, которую я в конечном счете ввожу, но иногда трудно выяснить то, что я пытаюсь ввести.

Это выглядит примерно так сначала:

  name@machine:~$ 

Затем становится этим:

  name@machine:~$ scp -i /h

после прокрутки назад к одному из моих длинных scp команды. Если я затем ввожу команду, как так:

  name@machine:~$ scp -i /hls -l

это выполняет команду: ls -l

Отредактированный для добавления значения PS1 в моем ~/.bashrc

  PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\033[31;40m\]$(__git_ps1 "[%s]")\[\033[00m\]\$ '

Отредактированный снова для добавления значения echo $PS1

  \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\033[31;40m\]$(__git_ps1 "[%s]")\[\033[00m\]\$
1
задан 08.09.2010, 22:58

3 ответа

Вы пропускаете a \[ (тот после \w), попробуйте это:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[31;40m\]$(__git_ps1 "[%s]")\[\033[00m\]\$ '
1
ответ дан 12.12.2019, 08:37

Значение Вашего PS1 переменная содержит некоторые непечатаемые символы, такие как последовательности для выбирания цветов. Они должны быть перенесены в \[ и \] таким образом, они не считаются, когда Bash вычисляет, где отобразить вещи и переместить их, когда Вы делаете вещи как просмотр предыдущих команд. Если Вы показываете Ваш PS1 Я могу быть более конкретным.

4
ответ дан 12.12.2019, 08:37

Когда это происходит:

  • Удостоверьтесь, что Ваше окно терминала достаточно широко.
  • Команда Type: сброс
  • Нажмите control+L.
0
ответ дан 12.12.2019, 08:37

Теги

Похожие вопросы