( Zahy | 2022. 07. 03., v – 11:51 )

Szerintem nem olvastál eleget utána a dolgoknak.

Bill Joy leírta, hogy a törlés azért így működik a vi-ban (megnéztem, az nvi-ban is, ami nem csoda ha egyszer bug-to-bug compatible), mert amikor fejlesztette, akkor teljesen természetes dolog volt a 300 baudos (vagy még lassabb) kapcsolaton lógó soros terminál. Ezen sebesség mellett a kélpernyőfrissítés minden Backspace hatására - ha a te általad elvárt működést szeretnénk -, baromi lassú lenne - ettől nyilván meghülyülne a felhasználó.. Azon lehet vitatkozni, hogy később, amikor már elterjedtek a 9600 meg 19200 (pláne 38200!) baudos soros vonalakon lógó terminálok, akkor miért nem épített bele egy opciót ennek kikapcsolására. De ha azt is tudod, hogy tán 20 vagy 30 évvel a vi megalkotása után egy riportban gyakorlatilag elhatárolódott a vi-tól, akkor lehet sejteni, hogy valószínűleg ezért maradt el ez az apróság. Senkinek nem kellett semmit újra tanulni, minden ugyanúgy működik, ahogy dokumentált. Amúgy sokak pont azt rühellik a Linuxnál, hogy 2-3-5 évente mindent teljesen újraírnak - lehetőleg a korábbi verzióhoz képest inkompatibilis módon (lásd ugye service izé start és systemctl start izé - vagy fordítva?; vagy "kidobni" az ifconfigot, mert nem megoldható vele ez-meg-az, közben a BSD-k azon funkciók 99%-át pont beleépítik a hagyományos ifconfig-ba; stb.) És a fejlesztők egója sokszor fontosabb, mint a világ maradék 99%-a.

(Ezt a részt meg már nem törlöm ki, de mivel figyelmetlen voltam, ezért nem releváns, azt hittem más a bajod a törléssel.)

=== nem válasz, csak agymenés ===

vi ~/.exrc

map ^H X

és innentől töröl neked a Backspace. A ^H az egy fizikai Control-H. Ha mégsem, akkor a Backspace nem azt a kódot küldi, amit (Control-V megnyomása után) ^H-ként bevittem, szóval oda azt gépeld, hogy Ctrl-V utána Backspace (ez "szabványos" esetben lehet még ^? is, de használtam én olyan Wyze terminált, amin egy 4 karakter hosszú ESC-szekvenciát küldött a Backspace gomb). Amúgy vi-nál dokumentált, hogy a ^H az a h gombbal egyenértékű parancsmódban. Ha azt akarod, hogy beszúró módban is törlés legyen, az kicsit nehezebb, mert a vi - ahogy írtad is, beszúró módban nem töröl, de megoldható. Fenti mellé vedd fel a

map! ^H <ESC>xa

makrót is, ekkor beszúró módból előbb kilép parancs módba, (ekkor a kurzort balra lépteti), utána kitörli a kurzor alatti karaktert, majd visszalép beszúró módba.(A map parancs parancs-módban, a map! pedig beszúró módban teszi lehetővé a billentyűk átdefiniálását.)

Problem solved.

=== end of nem válasz ===

 

Ami pedig a dash-t illeti, kb 100% valószínűséggel tud promptot színezni is. Módosítsd  a PS1-et:

PS1='<ESC>[42mHajrá Fradika!<ESC>[0m '

Lesz neked rusnya zöld promptod.Az <ESC> helyére egy fizikai ESC kódot tegyél (tudod, ASCII 27). Az egyes színekhez tartozó számértékekhez google://"vt100 terminal color codes". Hogy a dash hogyan számolja a prompt hosszát, azt nem tudom, ksh-ban és bash-ban, ha ilyen a sztring hosszán nem növelő ESC-szekvenciákat rak az ember a promptba, akkor minden ilyen sztring elé javasolt egy \[ és mögé egy \] szöveg is, ettől tudja, hogy a közbezárt izé nem számít a hossz szempontjából.

A TAB-kiegészítésről nem tudok nyilatkozni, de a válasz kedvéért feltelepítettem (0.5.11.5-ös verzió, jelentsen ez bármit is), és majd játszok vele egy kicsit. Elvben a doksija szerint tud VI és Emacs módot is, de tény, nem szól róla ennél többet, és egy gyors googel se mutat érdemi infót. Attól még ...

 

Összefoglalom. Soha ne mondd, hogy soha. A hagyományos UNIX rendszerek nagy előnye az volt, hogy használható dokumentáció volt hozzájuk - épelméű esetben magán a rendszeren telepítve, csak el kell őket olvasni. Ezt mondjuk sok Linux terjesztés nem feltétlenül ugorja meg a mai napig sem, nem véletlenül terjednem a fórumok, howtok, stackexchange és társaik. Az is igaz, az emberek zöme nem tud és nem szeret olvasni (van néhány, akinél fordított a sorrennd) - minden működjön elsőre úgy ahogy NEKI jó (és nem gondolja végig, hogy az MÁSNAK nem biztos, hogy pont úgy jó).

(Kedvenc példám, hogy nagyon sok felhasználó már ott elvérzik, ha bekerül egy "set +o emacs" parancs a .bashrc-jébe.)