[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Problemen met lange commando's in terminal



Op 7 april 2011 10:03 heeft Paul van der Vlis <paul@vandervlis.nl> het
volgende geschreven:
> Al jaren erger ik me vreselijk aan het volgende: als een commando langer
> is dan een regel levert dit soms problemen op. Het komt er dan op neer
> dat de tweede regel over de eerste regel wordt getoond.

Ja, dat ken ik ook. Zodra de cursor bij het typen in een
terminalscherm bij de rechterrand komt, gebeurt de terugloop naar
dezelfde regel, in plaats van de volgende regel, zodat de net getypte
regel vanaf links wordt overschreven. Volgens mij ligt het aan bash
(in sh [/bin/sh -> dash] heb ik er geen last van, maar ja, dan heb je
ook geen line-edit).

$ echo $0
bash

Ik heb er last van in de volgende terminal-emulators:
konsole
gnome-terminal
PuTTY
en met de volgende TERM-waarden:
screen
xterm
putty

Het probleem gaat weg als ik de volgende TERM-waarde instel:
$ export TERM=vt100-nam
maar dan krijg ik een ander probleem, namelijk dat mijn cursor
initieel verkeerd wordt geplaatst als ik lange commando's terughaal
met {pijltje omhoog} of {Esc}-k (ik werk met set -o vi).

Nog een paar proefjes tonen aan dat het probleem (ook) samenhangt met
de instelling van PS1. Die is bij mij nu (in .bashrc):
PS1="$(tput bold)$(id -un):\$PWD\\n\$ $(tput sgr0)"
dus met bold (\E1m) en verdeeld over twee regels (\\n).
Als ik PS1 terugzet naar
PS1='$ '
heb ik geen problemen met lange regels (het probleem verdwijnt), zowel
bij gewoon typen als bij history-edit.

Nog wat proefnemingen...

Het ligt inderdaad aan PS1. Als ik de volgende regel in .bashrc zet,
zijn de problemen verdwenen:
PS1="\[$(tput bold)\]$(id -un):\w\n\$ \[$(tput sgr0)\]"
De belangrijkste wijziging:
\[ \] om de escapecodes voor bold en normal heen, zodat voor bash
duidelijk is dat die tekens de cursor niet verplaatsen.

OT: gelijk $PWD veranderd in \w, $ in \$ en \\n in \n.

Vriendelijke groeten,
Arjen Bax


Reply to: